আইকন এবং পাঠ্য সহ অ্যান্ড্রয়েড বোতাম


92

আমার অ্যাপে এর মতো কিছু বোতাম রয়েছে:

    <Button
        android:id="@+id/bSearch"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:padding="16dp"
        android:text="Search"
        android:textSize="24sp" />

আমি পাঠ্য এবং আইকন সহ একই বোতামটি তৈরি করার চেষ্টা করছি। অ্যান্ড্রয়েড: অঙ্কনযোগ্য লেফট আমার পক্ষে কাজ করে না (সম্ভবত এটি হবে তবে আমি কীভাবে আইকনটিতে সর্বোচ্চ উচ্চতা নির্ধারণ করতে পারি তা জানি না)।

তাই আমি ইমেজভিউ এবং একটি টেক্সটভিউ দিয়ে লিনিয়ারলআউট তৈরি করেছি এবং এটিকে একটি বোতামের মতো কাজ করে তুলেছি:

    <LinearLayout
        android:id="@+id/bSearch2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@android:drawable/btn_default"
        android:clickable="true"
        android:padding="16dp"
        android:orientation="horizontal" >

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="5dp"
            android:adjustViewBounds="true"
            android:maxHeight="30dp"
            android:maxWidth="30dp"
            android:scaleType="fitCenter"
            android:src="@drawable/search_icon" />

        <TextView
            android:id="@+id/tvSearchCaption"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:textSize="24sp"
            android:paddingRight="30dp"
            android:gravity="center"
            android:text="Search" />
    </LinearLayout>

আমার নতুন বোতামটি হ'ল আমি যা চাই তা চাই (হরফ আকার, আইকন এবং পাঠ্য স্থান নির্ধারণ)। তবে এটি আমার ডিফল্ট বোতামগুলির মতো দেখাচ্ছে না:

এখানে চিত্র বর্ণনা লিখুন

তাই আমি চেষ্টা করেছি, আমার নতুন বাটনের পটভূমি এবং পাঠ্যের রঙটি পরিবর্তন করতে:

Button Search = (Button) findViewById(R.id.bSearch);
LinearLayout bSearch2 = (LinearLayout) findViewById(R.id.bSearch2);
bSearch2.setBackground(bSearch.getBackground());
TextView tvSearchCaption = (TextView)findViewById(R.id.tvSearchCaption);
tvSearchCaption.setTextColor(bSearch.getTextColors().getDefaultColor());

এটি একটি অদ্ভুত ফলাফল দেয়, আমার পুরানো বোতামটি বিভ্রান্ত হয়:

এখানে চিত্র বর্ণনা লিখুন

আমি যখন এক্সএমএলে এই দুটি বোতামের ক্রম পরিবর্তন করি, সুতরাং "নতুন বোতাম" প্রথমে যায়, এটি অন্য একটি বিস্ময়কর ফলাফল করে:

এখানে চিত্র বর্ণনা লিখুন

এখন আমি লক্ষ্য করেছি, আমি যখন পুরানো বোতামটি টিপতে চেষ্টা করি তখন নতুনটি টিপবে।

কোন ধারনা?

উত্তর:


283

আর একবার চেষ্টা কর.

<Button
    android:id="@+id/bSearch"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="16dp"
    android:text="Search"
    android:drawableLeft="@android:drawable/ic_menu_search"
    android:textSize="24sp"/>

4
এটি দেখতে আমি ঠিক কীভাবে দেখতে চাই ঠিক ততই আমি নিজের আইকনটি ব্যবহার করতে চাই, ডিফল্ট অ্যান্ড্রয়েডগুলি না। আমার আইকনগুলি বড় আকারের। তার মানে কি, আমার প্রতিটি রেজোলিউশনের জন্য আরও ছোট বিটম্যাপ তৈরি করতে হবে? এমন কোনও প্যারামিটার আছে যা আমাকে আইকন আকার নিয়ন্ত্রণ করতে দেয়?
দুসান

ঐটা ঠিক. আপনার প্রতিটি রেজোলিউশনের জন্য আলাদা চিত্র আকার তৈরি করতে হবে
লিম ভো

ঠিক আছে, আপনার সহায়তার জন্য ধন্যবাদ, তবে এখন আমার আর একটি প্রশ্ন আছে ... আমার আইকনগুলি হালকা, কারণ অন্ধকার বোতামটিতে লেখাটি সাদা, যেমন আপনি আমার প্রশ্নের চিত্রগুলিতে দেখতে পারেন can অ্যাপটি অ্যান্ড্রয়েড সংস্করণে উপলভ্য এমন একটি থিম ব্যবহার করতে সেট করা হয়েছে। আমার উদাহরণগুলি অ্যান্ড্রয়েড ৪.৩ থেকে প্রাপ্ত। অ্যাপটি অ্যান্ড্রয়েড ২.৩.৩ এ চললে ডিফল্ট বোতামগুলি গা dark় পাঠ্যের সাথে হালকা। আমার প্রথম চিত্রের বোতামের মতো কিন্ডা। পুরানো ডিভাইসে চলমান আইকনটির জন্য বিকল্প বিটম্যাপ দেওয়ার কোনও উপায় আছে কি? আমি আশা করি আপনি আমার প্রশ্নটি বুঝতে পেরেছেন :)
দুসান

এটি একটি ভাল প্রশ্ন। আপনি আপনার আইকনটির জন্য আলাদা স্টাইলকে সংজ্ঞায়িত করতে পারেন, প্রতিটি এপিআই স্তরের জন্য স্টাইলে কুলার পাঠ্য (এটি অ্যান্ড্রয়েড ওএস সংস্করণ অর্থ)। আপনি মানগুলি- v11, মান-v14 ফোল্ডার দেখতে পাবেন।
লিম ভো

4
আপনি আইকন অ্যান্ড্রয়েডে প্যাডিং যোগ করতে পারেন: অঙ্কনযোগ্য প্যাডিং = ""
আসাদ মির্জা

15

বাম, ডান, উপরে বা নীচে একটি চিত্র যুক্ত করতে আপনি এই জাতীয় বৈশিষ্ট্যগুলি ব্যবহার করতে পারেন:

android:drawableLeft
android:drawableRight
android:drawableTop
android:drawableBottom

নমুনা কোড উপরে দেওয়া হয়েছে। আপনি আপেক্ষিক বিন্যাস ব্যবহার করে এটি অর্জন করতে পারেন।


আমি কীভাবে এটি অগ্রগতিমূলকভাবে করব
সুজয় ইউএন

4
আপনি android:drawableStartবাম android:drawableEndপরিবর্তে এবং ডান পরিবর্তে বলতে পারেন ।
সিমো গার্সিয়া 12

@ সিমোগার্সিয়া * হওয়া উচিত। শুরুতে ডানদিকে এবং শেষটি সব জায়গায় বাম প্রতিস্থাপন করা উচিত। এটি নিশ্চিত করা হয় যে ডান থেকে বাম পড়ার পাশাপাশি বাম থেকে ডান পঠন পাওয়া যায় যেহেতু অন্য কয়েকটি দেশ ভিন্নভাবে পড়েন।
কারসন জে।

11

যে কেউ गतिशीलভাবে setCompoundDrawables(Drawable left, Drawable top, Drawable right, Drawable bottom)এটি করতে খুঁজছেন তার জন্য বোতামগুলির অবজেক্টে সহায়তা করবে।

নমুনা

Button search = (Button) findViewById(R.id.yoursearchbutton);
search.setCompoundDrawables('your_drawable',null,null,null);

4
সেটকম্পাউন্ডড্র্যাবেবলগুলি ব্যবহার করা UI- তে প্রতিফলিত হয় না। পরিবর্তে সেটকম্পাউন্ডড্রেইবলস উইথ ইন্ট্রিনসিকবাউন্ড ব্যবহার করা হয়েছে এবং এটি কাজ করেছে।
আলডো

5

আপনি সত্যই এটি চান

<Button
       android:id="@+id/settings"
       android:layout_width="190dp"
       android:layout_height="wrap_content"
       android:layout_gravity="center_horizontal"
       android:background="@color/colorAccent"
       android:drawableStart="@drawable/ic_settings_black_24dp"
       android:paddingStart="40dp"
       android:paddingEnd="40dp"
       android:text="settings"
       android:textColor="#FFF" />

4

আপনি উপাদান উপাদান লাইব্রেরি এবং উপাদান ব্যবহার করতে পারেন MaterialButton। এবং গুণাবলী
ব্যবহার করুন ।app:iconapp:iconGravity="start"

কিছুটা এইরকম:

  <com.google.android.material.button.MaterialButton
        style="@style/Widget.MaterialComponents.Button.Icon"
        app:icon="@drawable/..."
        app:iconGravity="start"
        ../>

এখানে চিত্র বর্ণনা লিখুন


মনে রাখবেন যে আপনার অ্যাপের জন্য যদি কোনও উপাদান নকশা থিম থাকে তবে স্ট্যান্ডার্ড বোতাম উইজেটটি ম্যাটেরিয়াল বাটন হিসাবে স্বয়ংক্রিয়ভাবে স্ফীত হয়। এখানে প্রতি - material.io/develop/android/components/buttons
dodgy_coder

2

@ লিম ভোর উত্তর সঠিক যদি আপনি অ্যান্ড্রয়েড.উইজেট.বাটন ব্যবহার করেন তবে কোনও ওভাররাইড না করে। আপনি যদি মেটারিয়াল কম্পোনেন্টগুলি ব্যবহার করে আপনার থিমটি ওভাররাইড করছেন, এটি সমস্যার সমাধান করবে না।

আপনি যদি তাই

  1. Com.google.android.matory.button.MaterialButton বা ব্যবহার করে
  2. মেটারিয়াল কম্পোনেন্টস ব্যবহার করে অ্যাপ থিমকে ওভাররাইড করছে

অ্যাপ্লিকেশন ব্যবহার করুন: আইকন প্যারামিটার।

<Button
    android:id="@+id/bSearch"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="16dp"
    android:text="Search"
    android:textSize="24sp"
    app:icon="@android:drawable/ic_menu_search" />
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.