【问题标题】:Set a specific color for a specific item in the navigation drawer [duplicate]为导航抽屉中的特定项目设置特定颜色[重复]
【发布时间】:2018-11-15 08:13:59
【问题描述】:

目前我想为导航抽屉中的一项设置特定颜色:

这是我的代码:

Menu menuNav= mNavigationView.getMenu();
                               MenuItem nav_item2 = menuNav.findItem(R.id.drawer_pay).setIconTintList(ContextCompat.getColorStateList(
                                       mNavigationView.getContext(),
                                       R.color.background_gray));

但我收到这种错误:

 java.lang.NoSuchMethodError: No interface method setIconTintList(Landroid/content/res/ColorStateList;)Landroid/view/MenuItem; in class Landroid/view/MenuItem; or its super classes (declaration of 'android.view.MenuItem' appears in /system/framework/framework.jar:classes2.dex)

【问题讨论】:

    标签: android navigation-drawer


    【解决方案1】:

    第一道

    尝试使用:

    app:itemIconTint="@color/color_pink"  //selected icon color
    app:itemTextColor="@color/color_pink" //selected text color
    app:itemBackground="@color/color_gray" 
    

    为了你的NavigationView

    <android.support.design.widget.NavigationView
    android:id="@+id/navigation_drawer"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    app:headerLayout="@layout/header_layout"
    app:itemIconTint="@color/color_pink"  
    app:itemTextColor="@color/color_pink" 
    app:itemBackground="@color/color_gray"
    app:menu="@menu/menu_drawer" />
    

    第二种方式

    以编程方式改变使用:

    navigationView.setItemTextColor(ColorStateList1);
    navigationView.setItemIconTintList(ColorStateList2);
    

    将ColorStateList1 和ColorStateList2 定义为:

    对于导航视图项文本颜色

    int[][] state = new int[][] {
            new int[] {-android.R.attr.state_enabled}, // disabled
            new int[] {android.R.attr.state_enabled}, // enabled
            new int[] {-android.R.attr.state_checked}, // unchecked
            new int[] { android.R.attr.state_pressed}  // pressed
    
    };
    
    int[] color = new int[] {
            Color.WHITE,
            Color.BLUE,
            Color.WHITE,
            Color.WHITE
    };
    
    ColorStateList ColorStateList1 = new ColorStateList(state, color);
    

    导航视图项目图标颜色

    int[][] states = new int[][] {
            new int[] {-android.R.attr.state_enabled}, // disabled
            new int[] {android.R.attr.state_enabled}, // enabled
            new int[] {-android.R.attr.state_checked}, // unchecked
            new int[] { android.R.attr.state_pressed}  // pressed
    
    };
    
    int[] colors = new int[] {
            Color.WHITE,
            Color.BLUE,
            Color.WHITE,
            Color.WHITE
    };
    
    ColorStateList ColorStateList2 = new ColorStateList(states, colors);
    

    【讨论】:

    • 这将改变导航抽屉中所有项目的颜色,我需要具体。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    • 2013-06-10
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    相关资源
    最近更新 更多