নীচে নেভিগেশন ভিউতে ট্যাবটির রঙ নির্বাচন করা হয়েছে


142

আমি BottomNavigationViewএকটি প্রকল্পে একটি যুক্ত করছি , এবং আমি নির্বাচিত ট্যাবটির জন্য একটি পৃথক পাঠ্য (এবং আইকন টিন্ট) রঙ পছন্দ করতে চাইছি (নন-নির্বাচিত ট্যাবগুলি প্রভাবিত করার জন্য)। android:state_selected="true"রঙ নির্বাচক সংস্থান ফাইলের সাথে একটি পৃথক রঙ ব্যবহার করা কার্যকর বলে মনে হচ্ছে না। দুর্ভাগ্যক্রমে কোনও প্রভাব ফেলেনি android:state_focused="true"বা এর সাথে অতিরিক্ত আইটেম এন্ট্রি থাকার চেষ্টা করেছি android:state_enabled="true"state_selectedকোনও ভাগ্য ছাড়াই ডিফল্ট (অ-নির্বাচিত) রঙের জন্য মিথ্যা (স্পষ্টতই) এ্যাট্রিবিউট সেট করার চেষ্টা করুন ।

আমি এখানে আমার লেআউটে ভিউটি যুক্ত করব:

<android.support.design.widget.BottomNavigationView
        android:id="@+id/bottom_navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        app:itemBackground="@color/silver"
        app:itemIconTint="@color/bnv_tab_item_foreground"
        app:itemTextColor="@color/bnv_tab_item_foreground"
        app:menu="@menu/bottom_nav_bar_menu" />

এখানে আমার রঙ নির্বাচনকারী ( bnv_tab_item_foreground.xml):

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@android:color/darker_gray"  />
    <item android:state_selected="true" android:color="@android:color/holo_blue_dark" />
</selector>

এবং আমার মেনু রিসোর্স ( bottom_nav_bar_menu.xml):

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/action_home"
        android:icon="@drawable/ic_local_taxi_black_24dp"
        android:title="@string/home" />
    <item
        android:id="@+id/action_rides"
        android:icon="@drawable/ic_local_airport_black_24dp"
        android:title="@string/rides"/>
    <item
        android:id="@+id/action_cafes"
        android:icon="@drawable/ic_local_cafe_black_24dp"
        android:title="@string/cafes"/>
    <item
        android:id="@+id/action_hotels"
        android:icon="@drawable/ic_local_hotel_black_24dp"
        android:title="@string/hotels"/>

</menu>

আমি কোন সাহায্য কৃতজ্ঞ হবে।

উত্তর:


310

একটি তৈরি করার সময় selector, সর্বদা শেষের দিকে ডিফল্ট স্থিতি রাখুন, অন্যথায় কেবলমাত্র ডিফল্ট অবস্থা ব্যবহার করা হবে। আপনার নির্বাচকের আইটেমগুলিকে পুনরায় অর্ডার করতে হবে:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:color="@android:color/holo_blue_dark" />
    <item android:color="@android:color/darker_gray"  />
</selector>

এবং রাজ্যটি ব্যবহার করা BottomNavigationBarউচিত state_checkedনয় state_selected


77
এটিকে <android.support.design.widget.BottomNavicationView অ্যাপ্লিকেশনটিতে যোগ করুন: আইটেমিঙ্কটিন্ট = "@ ড্রয়েবল / এনভাইটাম_ক্লোর_সেট" অ্যাপ্লিকেশন: আইটেমটেক্সট कलোর = "@ ড্রয়েবল / এনভি_াইটেম_ক্লোর_স্টেট" />
ডায়ানাকারেমস

1
আমার ক্ষেত্রে আমার গতিশীল মেনু তৈরি করা দরকার এবং এই সমাধানটি কার্যকর হয়নি। একমাত্র কার্যক্ষম সমাধানটি ম্যানুয়ালি মেনু আইটেমগুলি স্ট্যাকওভারফ্লো.com
রাফেল

9
"রাষ্ট্র_চেক করা রাষ্ট্র-নির্বাচিত নয়"। কি সময় রক্ষাকারী :) ধন্যবাদ!
পাইওটার ইলেসারিউ

3
এটিকে <android.support.design.widget.BottomNavicationView অ্যাপ্লিকেশনটিতে যোগ করুন: আইটেমিঙ্কটিন্ট = "@ রঙ / নেভ_মাইটার_ক্লোর_স্টেট" অ্যাপ্লিকেশন: আইটেমটেক্সট कलোর = "@ রঙ / নেভি_মোট_ক্লোর_স্টেট" /> @ আঁকারযোগ্য এর পরিবর্তে
অ্যান্টন

1
যে কেউ আমার মতো আটকে গিয়েছিল তাদের জন্য আমাকে "রেজিস" এ একটি "রঙ" ডিরেক্টরি তৈরি করতে হয়েছিল এবং এই ফাইলটি সেখানে রেখে দিতে হয়েছিল।
তৈয়ব মাজহার

67

1. ইনসাইড মাঝামাঝি নাম রঙ দিয়ে ফোল্ডার তৈরি (অঙ্কনযোগ্য মত)

2. রঙ ফোল্ডারে রাইট ক্লিক করুন। নতুন-> রঙের রিসোর্স ফাইল নির্বাচন করুন - > color.xML ফাইল তৈরি করুন (bnv_tab_item_ পূর্বভূমি) (চিত্র 1: ফাইলের কাঠামো)

3. কপি করুন এবং bnv_tab_item_foreground পেস্ট

<android.support.design.widget.BottomNavigationView
            android:id="@+id/navigation"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginEnd="0dp"
            android:layout_marginStart="0dp"
            app:itemBackground="@color/appcolor"//diffrent color
            app:itemIconTint="@color/bnv_tab_item_foreground" //inside folder 2 diff colors
            app:itemTextColor="@color/bnv_tab_item_foreground"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:menu="@menu/navigation" />

bnv_tab_item_foreground:

 <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_checked="true" android:color="@color/white" />
        <item android:color="@android:color/darker_gray"  />
    </selector>

চিত্র 1: ফাইল কাঠামো:

চিত্র 1: ফাইল স্ট্রাকচার


53

BottomNavigationViewব্যবহার colorPrimary নির্বাচিত ট্যাব জন্য আবেদন থিম থেকে এবং এটি ব্যবহার android:textColorSecondary নিষ্ক্রিয় ট্যাব আইকন আভা জন্য।

সুতরাং আপনি পছন্দসই প্রাথমিক রঙের সাথে একটি স্টাইল তৈরি করতে পারেন এবং এটি আপনার থিম হিসাবে সেট করতে পারেন BottomNavigationView একটি এক্সএমএল লেআউট ফাইলটিতে ।

শৈলী.এক্সএমএল :

 <style name="BottomNavigationTheme" parent="Theme.AppCompat.Light">
        <item name="colorPrimary">@color/active_tab_color</item>
        <item name="android:textColorSecondary">@color/inactive_tab_color</item>
 </style>

your_layout.xML :

<android.support.design.widget.BottomNavigationView
            android:id="@+id/navigation"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="?android:attr/windowBackground"
            android:theme="@style/BottomNavigationTheme"
            app:menu="@menu/navigation" />

3
android:textColorSecondaryকাজ না করে. android:colorForegroundপরিবর্তে ব্যবহার করা উচিত
মাহদী মকাদাসী

এটি সেরা উত্তর, "নির্বাচক" পদ্ধতিটি নিষ্ক্রিয় ট্যাব রঙ হিসাবে "গাer়_ গ্রে" ব্যবহার করে যা মূলটির চেয়ে আলাদা। android:textColorSecondaryআমার জন্যও কাজ করে। ধন্যবাদ!
স্যাম চেন

9

যদি আপনি প্রোগ্রামক্রমে আইকন এবং পাঠ্যগুলির রঙ পরিবর্তন করতে চান:

ColorStateList iconsColorStates = new ColorStateList(
            new int[][]{
                    new int[]{-android.R.attr.state_checked},
                    new int[]{android.R.attr.state_checked}
            },
            new int[]{
                    Color.parseColor("#123456"),
                    Color.parseColor("#654321")
            });

    ColorStateList textColorStates = new ColorStateList(
            new int[][]{
                    new int[]{-android.R.attr.state_checked},
                    new int[]{android.R.attr.state_checked}
            },
            new int[]{
                    Color.parseColor("#123456"),
                    Color.parseColor("#654321")
            });

    navigation.setItemIconTintList(iconsColorStates);
    navigation.setItemTextColor(textColorStates);

5

উত্তর দিতে দেরি হলেও কারও পক্ষে সহায়ক হতে পারে। আমি খুব নির্লিপ্ত ভুলটি করছিলাম, আমি রং পরিবর্তন নির্বাচন এবং নির্বাচন নির্বাচন করতে নীচে_ক্লোলার_নাভ.এক্সএমএল নামে একটি নির্বাচক ফাইলটি ব্যবহার করছিলাম তবে তবুও এটি নীচে নেভিগেশনভিউতে কোনও রঙ পরিবর্তন প্রতিফলিত করছে না।

তারপর আমি বুঝতে পারছি, আমি ফিরছিলেন মিথ্যা মধ্যে onNavigationItemSelected পদ্ধতি। আপনি যদি এই পদ্ধতিতে সত্যে ফিরে আসেন তবে এটি দুর্দান্ত কাজ করবে।


2

নির্বাচক আইটেমের বৈশিষ্ট্যগুলির android:state_enabledচেয়ে বরং ব্যবহার করার চেষ্টা করুন android:state_selected


প্রশ্নে উল্লিখিত হিসাবে, আমিও রাষ্ট্র_ সক্ষম করার চেষ্টা করেছি, তবে এই নির্দিষ্ট উইজেটের সাথে ব্যবহার করার সঠিক রাষ্ট্রের বৈশিষ্ট্য এটি নয়। উত্তরে যে বিষয়টি উল্লেখ করা হয়েছিল তা ছিল: ১. ক্রমটি ভুল ছিল (নির্বাচকের মধ্যে ডিফল্ট রাজ্যটি শেষ আইটেম হওয়া উচিত) ২. state_check হচ্ছে নীচটি নেভিগেশনভিউয়ের সাথে ব্যবহারের জন্য সঠিক রাষ্ট্রীয় বৈশিষ্ট্য।
জাভাদ সাদেকজাদেহ

1

পাঠ্য রঙ সেট করার জন্য, BottomNavigationViewদুটি শৈলীর বৈশিষ্ট্য রয়েছে যা আপনি সরাসরি এক্সএমএল থেকে সেট করতে পারেন:

  • itemTextAppearanceActive
  • itemTextAppearanceInactive
In your layout.xml file:

<com.google.android.material.bottomnavigation.BottomNavigationView
            android:id="@+id/bnvMainNavigation"
            style="@style/NavigationView"/>

In your styles.xml file:

<style name="NavigationView" parent="Widget.MaterialComponents.BottomNavigationView">
  <item name="itemTextAppearanceActive">@style/ActiveText</item>
  <item name="itemTextAppearanceInactive">@style/InactiveText</item>
</style>
<style name="ActiveText">
  <item name="android:textColor">@color/colorPrimary</item>
</style>
<style name="InactiveText">
  <item name="android:textColor">@color/colorBaseBlack</item>
</style>

1

আমি একটি com.google.android.material.bottomnavigation.BottomNavigationView(ওপি'র মতো নয়) ব্যবহার করছি এবং আমি উপরে প্রস্তাবিত বিভিন্ন সমাধানের চেষ্টা করেছি, তবে কেবলমাত্র কাজটিই সেট করা ছিল app:itemBackgroundএবং app:itemIconTintআমার নির্বাচক রঙটি আমার পক্ষে কাজ করেছিল।

        <com.google.android.material.bottomnavigation.BottomNavigationView
            style="@style/BottomNavigationView"
            android:foreground="?attr/selectableItemBackground"
            android:theme="@style/BottomNavigationView"
            app:itemBackground="@color/tab_color"
            app:itemIconTint="@color/tab_color"
            app:itemTextColor="@color/bottom_navigation_text_color"
            app:labelVisibilityMode="labeled"
            app:menu="@menu/bottom_navigation" />

আমার color/tab_color.xmlব্যবহারandroid:state_checked

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/grassSelected" android:state_checked="true" />
    <item android:color="@color/grassBackground" />
</selector>

এবং আমি এর জন্য একটি নির্বাচিত রাজ্যের রঙ ব্যবহার করছি color/bottom_navigation_text_color.xml

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

এখানে সম্পূর্ণ প্রাসঙ্গিক নয় তবে সম্পূর্ণ স্বচ্ছতার জন্য, আমার BottomNavigationViewশৈলীটি নীচে রয়েছে:

    <style name="BottomNavigationView" parent="Widget.Design.BottomNavigationView">
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">@dimen/bottom_navigation_height</item>
        <item name="android:layout_gravity">bottom</item>
        <item name="android:textSize">@dimen/bottom_navigation_text_size</item>
    </style>


0

নির্বাচক তৈরির পরিবর্তে, শৈলী তৈরির সেরা উপায়।

<style name="AppTheme.BottomBar">
    <item name="colorPrimary">@color/colorAccent</item> 
</style>

এবং নির্বাচিত বা অ নির্বাচিত পাঠ্যের আকার পরিবর্তন করতে।

<dimen name="design_bottom_navigation_text_size" tools:override="true">11sp</dimen>
<dimen name="design_bottom_navigation_active_text_size" tools:override="true">12sp</dimen>

অ্যান্ড্রয়েড উপভোগ করুন!

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