android - নেভিগেশন ড্রয়ারে একটি চেক মেনু আইটেমের রঙ পরিবর্তন করুন




androiddesignsupport (4)

আমি আমার অ্যাপ্লিকেশনটিতে একটি নেভিগেশন ড্রয়ার প্রয়োগ করতে নতুন অ্যান্ড্রয়েড ডিজাইন সমর্থন লাইব্রেরি ব্যবহার করছি।

আমি কীভাবে নির্বাচিত আইটেমটির রঙ পরিবর্তন করব তা বুঝতে পারি না!

মেনুটির এক্সএমএল এখানে:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
    <item
        android:id="@+id/navigation_item_1"
        android:icon="@drawable/ic_1"
        android:title="@string/navigation_item_1"/>

    <item
        android:id="@+id/navigation_item_2"
        android:icon="@drawable/ic_2"
        android:title="@string/navigation_item_2"/>
</group>

এবং এখানে নেভিগেশন ভিউ এক্সএমএল যা একটি android.support.v4.widget.DrawerLayout ভিতরে স্থাপন করা হয়েছে:

<android.support.design.widget.NavigationView
    android:id="@+id/activity_main_navigationview"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    app:headerLayout="@layout/drawer_header"
    app:itemIconTint="@color/black"
    app:itemTextColor="@color/primary_text"
    app:menu="@menu/menu_drawer">

    <TextView
        android:id="@+id/main_activity_version"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:layout_marginBottom="@dimen/activity_vertical_margin"
        android:layout_marginLeft="@dimen/activity_horizontal_margin"
        android:textColor="@color/primary_text" />

</android.support.design.widget.NavigationView>

আপনার সাহায্যের জন্য ধন্যবাদ !

[সম্পাদনা] আমি ইতিমধ্যে এর মতো সমাধানগুলির দিকে নজর রেখেছি: অ্যান্ড্রয়েড মেনুটির পটভূমি রঙ পরিবর্তন করুন

এটি বেশ হ্যাক বলে মনে হচ্ছে এবং আমি ভেবেছিলাম যে নতুন ডিজাইন সমর্থন লাইব্রেরি দিয়ে ক্লিনারটি কিছু চালু করা হয়েছে?


আপনার ক্রিয়াকলাপের অনক্রিট পদ্ধতিতে আপনি এটি কীভাবে করতে পারেন তা এখানে:

NavigationView navigationView = findViewById(R.id.nav_view);
ColorStateList csl = new ColorStateList(
    new int[][] {
        new int[] {-android.R.attr.state_checked}, // unchecked
        new int[] { android.R.attr.state_checked}  // checked
    },
    new int[] {
        Color.BLACK,
        Color.RED
    }
);
navigationView.setItemTextColor(csl);
navigationView.setItemIconTintList(csl);

আমি বিশ্বাস করি app:itemBackground একটি app:itemBackground আশা করে। সুতরাং নীচের পদক্ষেপগুলি অনুসরণ করুন:

নিম্নলিখিত বিষয়বস্তুগুলির সাথে একটি অঙ্কনীয় ফাইল হাইলাইট_color.xML করুন:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
     <solid android:color="YOUR HIGHLIGHT COLOR"/>
</shape>

নিম্নলিখিত বিষয়বস্তুগুলির সাথে আরেকটি অঙ্কনযোগ্য ফাইল nav_item_drawable.xml তৈরি করুন:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:drawable="@drawable/highlight_color" android:state_checked="true"/>
</selector>

পরিশেষে app:itemBackground যুক্ত app:itemBackground ট্যাগ:

<android.support.design.widget.NavigationView
android:id="@+id/activity_main_navigationview"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/drawer_header"
app:itemIconTint="@color/black"
app:itemTextColor="@color/primary_text"
app:itemBackground="@drawable/nav_item_drawable"
app:menu="@menu/menu_drawer">

এখানে হাইলাইট_ক্লোর.এক্সএমএল ফাইল ব্যাকগ্রাউন্ডের জন্য একটি দৃ color় রঙের অঙ্কনযোগ্যকে সংজ্ঞায়িত করে। পরে এই রঙের অঙ্কনযোগ্যকে nav_item_drawable.xML নির্বাচককে বরাদ্দ করা হয়েছে।

এটি আমার পক্ষে কাজ করেছে। আশা করি এটি সাহায্য করবে।

******************************************** আপডেট *** *******************************************

যদিও উল্লিখিত উত্তরটি আপনাকে কয়েকটি বৈশিষ্ট্যের উপর সূক্ষ্ম নিয়ন্ত্রণ দেয় তবে আমি যেভাবে বর্ণনা করতে চলেছি তা আরও বেশি সলড অনুভব করে এবং এটি কিছুটা শীতল

আপনি যা করতে পারেন তা হ'ল, আপনি নেভিগেশনভিউয়ের জন্য styles.xml একটি থিম ওভারলে সংজ্ঞায়িত করতে পারেন:

    <style name="ThemeOverlay.AppCompat.navTheme">

        <!-- Color of text and icon when SELECTED -->
        <item name="colorPrimary">@color/color_of_your_choice</item> 

        <!-- Background color when SELECTED -->
        <item name="colorControlHighlight">@color/color_of_your_choice</item> 

    </style>

এবার এই app:theme ওভারলে app:theme প্রয়োগ app:theme নেভিগেশনভিউয়ের app:theme বৈশিষ্ট্য, এর মতো:

<android.support.design.widget.NavigationView
android:id="@+id/activity_main_navigationview"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:theme="@style/ThemeOverlay.AppCompat.navTheme"
app:headerLayout="@layout/drawer_header"
app:menu="@menu/menu_drawer">

আমি আশা করি এটি সাহায্য করবে


ভাল আপনি রঙ স্টেট রিসোর্স ব্যবহার করে এটি অর্জন করতে পারেন। আপনি যদি আপনার NavigationView অভ্যন্তরে লক্ষ্য করেন তবে আপনি ব্যবহার করছেন

app:itemIconTint="@color/black"
app:itemTextColor="@color/primary_text"

এখানে @color/black বা @color/primary_test ব্যবহার করার পরিবর্তে একটি Color State List Resource । তার জন্য, প্রথমে color নির্দেশকের ভিতরে একটি নতুন xml (উদাহরণস্বরূপ drawer_item.xML) তৈরি করুন (যা res ডিরেক্টরিতে থাকা উচিত)) যদি আপনার ইতিমধ্যে color নামের একটি ডিরেক্টরি না থাকে তবে একটি তৈরি করুন।

এখন drawer_item.xml ভিতরে কিছু করুন

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="checked state color" android:state_checked="true" />
    <item android:color="your default color" />
</selector>

চূড়ান্ত পদক্ষেপটি আপনার NavigationView পরিবর্তন করা হবে

<android.support.design.widget.NavigationView
    android:id="@+id/activity_main_navigationview"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    app:headerLayout="@layout/drawer_header"
    app:itemIconTint="@color/drawer_item"  // notice here
    app:itemTextColor="@color/drawer_item" // and here
    app:itemBackground="@android:color/transparent"// and here for setting the background color to tranparent
    app:menu="@menu/menu_drawer">

এর মতো আপনি IconTint , ItemTextColor , ItemBackground জন্য পৃথক রঙের রাজ্যের তালিকা সংস্থান ব্যবহার করতে পারেন।

এখন আপনি যখন কোনও আইটেমটি পরীক্ষিত হিসাবে সেট করেছেন ( xml বা প্রোগ্রামের মাধ্যমে), নির্দিষ্ট আইটেমটি চেক করা না xml চেয়ে আলাদা রঙের হবে।


যখনই NavigateView আইটেমটি ক্লিক করা হয় তখন নেভিগেটআইটেমটি সত্য পরীক্ষা করা সেট করা দরকার

//listen for navigation events
NavigationView navigationView = (NavigationView)findViewById(R.id.navigation);
navigationView.setNavigationItemSelectedListener(this);
// select the correct nav menu item
navigationView.getMenu().findItem(mNavItemId).setChecked(true);

NavigationItemSelectedListener নেভিগেশন NavigationView

  @Override
  public boolean onNavigationItemSelected(final MenuItem menuItem) {
    // update highlighted item in the navigation menu
    menuItem.setChecked(true);
    mNavItemId = menuItem.getItemId();

    // allow some time after closing the drawer before performing real navigation
    // so the user can see what is happening
    mDrawerLayout.closeDrawer(GravityCompat.START);
    mDrawerActionHandler.postDelayed(new Runnable() {
      @Override
      public void run() {
        navigate(menuItem.getItemId());
      }
    }, DRAWER_CLOSE_DELAY_MS);
    return true;
  }






androiddesignsupport