当前位置: 首页 > 知识库问答 >
问题:

选择或按下时如何更改导航抽屉菜单的文本颜色?

姚烨
2023-03-14

我想在单击导航抽屉时更改其文本颜色。

我怎么能做到呢?

这是我的清单:

<ImageView
    android:id="@+id/icon"
    android:layout_width="30dp"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="10dp"
    android:contentDescription="@string/desc_list_item_icon"
    android:src="@drawable/ic_launcher"/>

<TextView
    android:id="@+id/title"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:paddingLeft="50dp"
    android:paddingTop="10dp"
    android:paddingBottom="10dp"
    android:textSize="15dp"
    android:textStyle="bold"
    android:gravity="center_vertical" />

共有3个答案

侯博易
2023-03-14

您可以使用列表中的itemclicklistener或状态可绘制资源文件在代码中执行此操作

翁昊乾
2023-03-14

可以采用线性布局,如:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/row_highlighter"
    android:padding="5dp" >

        <TextView
            android:id="@+id/parentTitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:text="@string/app_name"
            android:textColor="@android:color/black"
            android:textSize="15sp" />


</LinearLayout>

和可绘图文件夹中的行荧光灯:

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

    <item android:drawable="@color/parent" android:state_activated="true"/>
    <item android:drawable="@android:color/white" android:state_pressed="true"/>
    <item android:drawable="@color/parent"/>

</selector>

和"父"在colors.xml在值文件夹与颜色u想要在十六进制:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="parent">#90caf9</color>
</resources>
贺俊楚
2023-03-14

>

  • 您需要使用
    ColorStateList对象初始化要使用的颜色。

    设置每个状态的颜色后,设置navitaionView itemTextColor(navigation.setItemTextColor(yourCustomColorStateList));

    这就是我得到答案的地方
    这里是另一个相关的Stackoverflow问题
    所有可用状态的官方Android文档

    示例:在主类的onCreate方法中使用此方法只需为状态设置颜色就可以了。请使用此官方开发人员文档查看状态列表

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);
    
        /**
         * start of code configuration for color of text of your Navigation Drawer / Menu based on state
         */
        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.WHITE,
                Color.WHITE,
                Color.WHITE
        };
    
        ColorStateList colorStateList1 = new ColorStateList(state, color);
    
    
        // FOR NAVIGATION VIEW ITEM ICON 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.WHITE,
                Color.WHITE,
                Color.WHITE
        };
        ColorStateList colorStateList2 = new ColorStateList(states, colors);
        navigationView.setItemTextColor(colorStateList1);
        navigationView.setItemIconTintList(colorStateList2);
        /**
         * end of code configuration for color of text of your Navigation Drawer / Menu based on state
         */
    

  •  类似资料:
    • 编辑:我使用的不是第三方库,而是支持库中提供的NavigationView。下面是XML布局:

    • 在我的应用程序中,我使用动作栏和导航抽屉。操作栏中有一个按钮用于打开和关闭导航抽屉。我想把它的颜色改成红色。我该怎么做?

    • 问题内容: 我想在导航抽屉标题内更改TextView的文本。但是我得到这个错误: java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“ void android.widget.TextView.setText(java.lang.CharSequence)” activity_main.xml nav_header_main MainActivity.ja

    • 我想更改导航抽屉标题内的TextView的文本。但我得到了这个错误: java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“void android.widget.textview.settext(java.lang.CharSequence)” activity_main.xml NAV_HEADER_MAIN mainactivity.java 我怎么能这

    • 我在图片中写的所有单词我需要更改导航颜色按钮警告颜色按钮非android:statusBarColor

    • 在我的片段中,我通过编程将片段添加到导航抽屉中,然后从右侧打开抽屉。注意,我无法直接访问抽屉布局的xml文件,因此需要一个编程解决方案。抽屉从右侧打开并正确关闭,我保留抽屉的打开/关闭状态,并在配置根据该状态更改后打开它。 问题是,在配置更改时,抽屉关闭(我可以看到抽屉动画到关闭状态),即使我根据保存的InstanceState布尔值恢复其打开/关闭状态。我在中的所有方法中放置了调试器,但它们没有