নতুন ট্যাবলআউট সূচকটির রঙ এবং উচ্চতা কীভাবে পরিবর্তন করবেন


123

আমি নতুনের সাথে ঘুরে বেড়াচ্ছিলাম android.support.design.widget.TabLayout, এবং একটি সমস্যা পেয়েছি, শ্রেণির সংজ্ঞায়, সূচকটির রঙ এবং ডিফল্ট উচ্চতা পরিবর্তনের কোনও পদ্ধতি নেই।

কিছু গবেষণা করে দেখা গেল ডিফল্ট সূচক রঙটি অ্যাপ থিম থেকে নেওয়া হয়েছে। বিশেষত: এখান থেকে:

<item name="colorAccent">#FF4081</item>

এখন, আমার ক্ষেত্রে, আমি যদি colorAccentএটি পরিবর্তন করি তবে এটি অন্যান্য সমস্ত ভিউগুলিকে প্রভাবিত করবে যা এই মানটিকে পটভূমির রঙ হিসাবে ব্যবহার করে, উদাহরণস্বরূপ প্রগ্রেসবার

এখন ইন্ডিকেটর কালার বাদে অন্য জিনিসগুলিতে পরিবর্তন করার কোনও উপায় আছে colorAccentকি?

উত্তর:


250

নতুন ট্যাবলআউট মান থেকে সূচক রঙ ব্যবহার করে এমন সমস্যা হওয়ায় colorAccentআমি android.support.design.widget.TabLayoutএটিকে কাস্টমাইজ করার কোনও পাবলিক পদ্ধতি নেই তা আবিষ্কার করে বাস্তবায়নটি খনন করার সিদ্ধান্ত নিয়েছি । তবে আমি ট্যাবলআউটটির এই স্টাইলের স্পেসিফিকেশনটি পেয়েছি:

<style name="Base.Widget.Design.TabLayout" parent="android:Widget">
    <item name="tabMaxWidth">@dimen/tab_max_width</item>
    <item name="tabIndicatorColor">?attr/colorAccent</item>
    <item name="tabIndicatorHeight">2dp</item>
    <item name="tabPaddingStart">12dp</item>
    <item name="tabPaddingEnd">12dp</item>
    <item name="tabBackground">?attr/selectableItemBackground</item>
    <item name="tabTextAppearance">@style/TextAppearance.Design.Tab</item>
    <item name="tabSelectedTextColor">?android:textColorPrimary</item>
</style>

এই শৈলীর নির্দিষ্টকরণ রয়েছে, এখন আমরা এটির মতো ট্যাবলেটটি কাস্টমাইজ করতে পারি:

<android.support.design.widget.TabLayout
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@id/pages_tabs"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/colorPrimary"
    android:minHeight="?attr/actionBarSize"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:tabIndicatorColor="@android:color/white"
    app:tabIndicatorHeight="4dp"/>

এবং সমস্যার সমাধান, ট্যাব সূচক রঙ এবং উচ্চতা উভয়ই তাদের ডিফল্ট মান থেকে পরিবর্তন করা যেতে পারে।


5
জাভা কোডের মাধ্যমে কি কোনও উপায় আছে 'ট্যাবসিলিটেড টেক্সটকালার' (ট্যাবিন্ডিকেটর রঙ বা উচ্চতা নয়)।
প্রকাশ

2
অ্যাপ: ট্যাবআইডিএলএক্সএমএল উইজেটে এই সমস্যাটি সমাধান করার জন্য আমার প্রয়োজন একমাত্র পরিবর্তন change ধন্যবাদ!
ব্র্যাডেন হল্ট

আমি এটি প্যারেন্ট স্টাইল হিসাবে তৈরি করেছি:parent="@style/Base.Widget.Design.TabLayout"
Ultimo_m

এই সমাধানটি বৈধ হিসাবে প্রমাণিত হয়েছে
নিখিল

100

ডিজাইন সমর্থন লাইব্রেরির সাহায্যে আপনি এগুলি এখন এক্সএমএলে পরিবর্তন করতে পারেন:

ট্যাবলআউট সূচকটির রঙ পরিবর্তন করতে :

app:tabIndicatorColor="@color/color"

ট্যাবলআউট সূচকটির উচ্চতা পরিবর্তন করতে :

app:tabIndicatorHeight="4dp"

4
আমি এই লাইনটি রেখেছি, তবে রঙটি এখনও অ্যাকসেন্ট রঙ
মাহদি

@ কেনজি আপনি কি নিশ্চিত যে এই লাইনটি ট্যাবলআউটতে রাখা হয়েছিল এবং এক্সএমএলের টুলবার বিটে নয়? সহজেই ভুল স্থান তৈরি করতে হবে :)
ওয়েস উইন

উচ্চতার জন্য নিখুঁত সমাধান। এটা ঠিক কাজ করে। ধন্যবাদ মালেক
হার্ডিক যোশি

1
পরিবর্তে আমি যদি গ্রেডিয়েন্ট রঙ প্রয়োগ করতে চাই তবে কী হবে?
হামজা খান

35

যেহেতু আমি অ্যান্ড্রয়েড বিকাশকারীদের মন্তব্যে একটি ফলো-আপ পোস্ট করতে পারি না , তাই যে কেউ বাছাই হওয়া ট্যাব সূচক রঙকে প্রোগ্রামগতভাবে সেট করতে হবে তাদের জন্য এখানে একটি আপডেট উত্তর রয়েছে:

tabLayout.setSelectedTabIndicatorColor(Color.parseColor("#FFFFFF"));

একইভাবে, উচ্চতার জন্য:

tabLayout.setSelectedTabIndicatorHeight((int) (2 * getResources().getDisplayMetrics().density));

এই পদ্ধতিগুলি সম্প্রতি সমর্থন লাইব্রেরির 23.0.0 সংশোধন করার জন্য যুক্ত করা হয়েছিল , এজন্য সোহেল সেতায়েশীর উত্তর প্রতিচ্ছবি ব্যবহার করে।


2
#SelectedTabIndicatorHight এখন হ্রাস করা হয়েছে, কোন ধারণা এখন কী ব্যবহার করবেন?
মাইকেলসএক্স


13

সঙ্গে desing সমর্থন গ্রন্থাগার v23 আপনি প্রোগ্রামেটিক্যালি রঙ এবং উচ্চতা নির্ধারণ করতে পারেন।

উচ্চতার জন্য কেবল ব্যবহার করুন:

TabLayout.setSelectedTabIndicatorHeight(int height)

এখানে সরকারী javadoc

রঙের জন্য কেবল ব্যবহার করুন:

TabLayout.setSelectedTabIndicatorColor(int color)

এখানে সরকারী javadoc

এখানে আপনি গুগল ট্র্যাকারে তথ্য সন্ধান করতে পারেন ।


রঙের জন্য আমাদের কোন পূর্ণসংখ্যা ব্যবহার করার কথা রয়েছে?
the_prole

আপনি উদাহরণস্বরূপ রঙের শ্রেণিটি ব্যবহার করতে পারেন Colorআরডি
সৌম্য

সেটসিলিটেডট্যাব ইন্ডিকেটরহাইটটি এখনই অবহিত করা হয়েছে
অ্যাপ্লিকেশন

9

প্রোগ্রামিকভাবে সূচক রঙ এবং উচ্চতা পরিবর্তন করতে আপনি প্রতিবিম্ব ব্যবহার করতে পারেন। উদাহরণস্বরূপ নীচে সূচক রঙ ব্যবহার কোড:

        try {
            Field field = TabLayout.class.getDeclaredField("mTabStrip");
            field.setAccessible(true);
            Object ob = field.get(tabLayout);
            Class<?> c = Class.forName("android.support.design.widget.TabLayout$SlidingTabStrip");
            Method method = c.getDeclaredMethod("setSelectedIndicatorColor", int.class);
            method.setAccessible(true);
            method.invoke(ob, Color.RED);//now its ok
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

এবং সূচক উচ্চতার পরিবর্তন করতে "setSelectedIndicatorHeright" এর পরিবর্তে "setSelectedIndicatorColor" ব্যবহার করুন তারপরে আপনার পছন্দসই উচ্চতা দ্বারা প্রার্থনা করুন


1
ধন্যবাদ! এটি আমাকে সাহায্য করে! আমার ধারণা, গুগল তাদের সমর্থন লাইব্রেরিতে এর জন্য পদ্ধতি সরবরাহ করতে ভুলে গেছে।
শিনতা এস

1
প্রতিবিম্ব কেন ব্যবহার করুন, যদি এটি ইতিমধ্যে জনসাধারণের কাজ হিসাবে পাওয়া যায়? বিকাশকারী.অ্যান্ড্রয়েড.
android/

@ সোহেলসীতায়িহি ওহ, ঠিক আছে ধন্যবাদ. তখন আপনার উত্তরটি আপডেট করা উচিত।
অ্যান্ড্রয়েড বিকাশকারী

1
তবে সমর্থন লাইব্রেরি 23.0.0 এর নীচে থাকা এপিআইয়ের জন্য এটি একটি সঠিক সমাধান। মানে হোয়াও! দুর্দান্ত উত্তর!
Sud007

6

ফটো নির্দেশক এটি ব্যবহার করুন:

 tabLayout.setSelectedTabIndicatorColor(ContextCompat.getColor(this, R.color.colorWhite));//put your color

6

এক্সএমএল থেকে:

app:tabIndicatorColor="#fff"

জাভা থেকে:

tabLayout.setSelectedTabIndicatorColor(Color.parseColor("#FFFFFF"));
tabLayout.setSelectedTabIndicatorHeight((int) (2 * getResources().getDisplayMetrics().density));


0

এই কোডটি আপনার কোডটিতে রেখে দিন। আপনি যদি রঙ পরিবর্তন করেন তবে প্যারেন্টেসিসে রঙ মান পরিবর্তন করুন।

tabLayout.setSelectedTabIndicatorColor(Color.parseColor("#FFFFFF"));

0

অ্যান্ড্রয়েড এটি সহজ করে তোলে।

public void setTabTextColors(int normalColor, int selectedColor) {
    setTabTextColors(createColorStateList(normalColor, selectedColor));
}

সুতরাং, আমরা শুধু বলি

mycooltablayout.setTabTextColors(Color.parseColor("#1464f4"), Color.parseColor("#880088"));

এটি আমাদের একটি নীল রঙের সাধারণ রঙ এবং বেগুনি নির্বাচিত রঙ দেবে।

এখন আমরা উচ্চতা সেট

public void setSelectedTabIndicatorHeight(int height) {
    mTabStrip.setSelectedIndicatorHeight(height);
}

এবং উচ্চতার জন্য আমরা বলি

mycooltablayout.setSelectedIndicatorHeight(6);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.