我正在尝试更改活动主抽屉的文本颜色,但找不到更改位置。我想把它改成浅色(白色)
这是我活动抽屉里的东西。xml
<?xml version="1.0" encoding="utf-8"?>
<group android:checkableBehavior="single">
<item android:id="@+id/nav_city1" android:icon="@android:drawable/ic_menu_mapmode"
android:title="Label1" />
<item android:id="@+id/nav_city2" android:icon="@android:drawable/ic_menu_compass"
android:title="Label2" />
<item android:id="@+id/nav_city3" android:icon="@android:drawable/ic_menu_myplaces"
android:title="Label3" />
<item android:id="@+id/nav_city4" android:icon="@android:drawable/ic_input_get"
android:title="Label4" />
</group>
<item android:title="Account">
<menu>
<item android:id="@+id/nav_profile" android:icon="@android:drawable/ic_menu_edit"
android:title="Profile" />
<item android:id="@+id/nav_settings" android:icon="@android:drawable/ic_menu_manage"
android:title="Settings" />
</menu>
</item>
我尝试在任何地方插入android:textColor,但它不起作用。
<menu xmlns:android="http://schemas.android.com/apk/res/android"
android:textColor="#FFFFFF">
<group android:checkableBehavior="single" android:textColor="#FFFFFF">
<item android:id="@+id/nav_cities" android:icon="@android:drawable/ic_menu_mapmode"
android:title="Cities" android:textColor="#FFFFFF"/>
您似乎正在使用新的Android支持设计库
。我没用过。我觉得您需要一个包含TextView
的标题布局,如上图所示。稍后在Java代码中,您可以访问标题布局,并使用findViewById()
获取TextView
s。
让我知道它是否有效。
只需在NavigationView中使用app:itemTextColor
即可通过xml实现同样的效果:
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_height="match_parent"
android:layout_width="240dp"
android:layout_gravity="start"
android:fitsSystemWindows="true"
android:background="@color/colorWhite"
app:headerLayout="@layout/drawer_header"
app:menu="@menu/drawer_view"
app:itemTextColor="@color/colorWhite">
在您的xml中添加上面的一行应该适用于您的情况<希望有帮助!
>
您需要使用
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布局:
我是一个新的Android系统,我有一个按钮,当我点击按钮时,它会显示一个弹出菜单。 它有两个项目,白天和晚上。 当我按夜间按钮时,整个活动主题更改为黑色,文本颜色为白色,而按白天按钮时,活动主题更改为白色,文本颜色为黑色。 我有一个代码,但它只更改弹出菜单。 我如何更改活动主题。 我的代码: style.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编程的新手,但是到目前为止一直表现不错。我已经读过很多关于这个问题的答案,但似乎无法使我的工作正常。基本上,我拥有的是带有导航抽屉的MainActivity。我有两个用相应的片段布局xmls正确初始化的片段。目前,我可以在启动应用程序时以及在单击抽屉中的每个项目时显示我的第一个片段;标题会发生变化;但是,片段保持不变。有什么建议?我认为相关的代码在下面(未显示的是Na
问题内容: 我想更改主视图(而不是按钮或文本视图)的背景颜色,而只是通常是黑色的真实背景…我得到了以下代码: 它在的内部,但只是更改了Button的背景。 问题答案: 尝试用类似的方法创建一个方法… 然后从您的OnClickListener调用它,并传递您想要的任何颜色。