我想更改导航抽屉列表项的背景颜色,以使其在单击时被更改。 另外,它还应该更改该项目的文本和图标颜色。 在此先感谢。
答案 0 :(得分:0)
这非常简单,类似于更改您使用的任何视图的背景。您可以简单地创建一个方法并将所有更改代码写入其中。将视图作为方法中的参数传递。
每当您单击任何导航抽屉项目时,都将对该方法传递您的看法。
例如,检查此方法
private boolean viewSelected(View view) {
ViewHolder currentViewHolder = (ViewHolder) view.getTag();
KTextView yourtextView = currentViewHolder.yourtextView;
view.setBackgroundColor(ResourceUtil.getInstance().getColor(R.color.colorSideMenuSelectedBackground));
currentViewHolder.viewSelector.setVisibility(View.VISIBLE);
yourtextView.setTypeface(yourtextView.getContext(), ResourceUtil.getInstance().getString(R.string.yourFontName));
if (lastSelectedView == null) {
lastSelectedView = view;
return true;
}
if (lastSelectedView != view) {
ViewHolder oldViewHolder = (ViewHolder) lastSelectedView.getTag();
oldViewHolder.viewSelector.setVisibility(View.GONE);
lastSelectedView.setBackgroundColor(ResourceUtil.getInstance().getColor(android.R.color.white));
KTextView newTextView = oldViewHolder.yourtextView;
newTextView.setTypeface(yourtextView.getContext(), ResourceUtil.getInstance().getString(R.string.yourfontname));
lastSelectedView = view;
return true;
}
return false;
}
此方法将仅更改视图的背景,字体和颜色。
希望这会有所帮助!
答案 1 :(得分:0)
这可以使用https://developer.android.com/guide/topics/resources/color-list-resource完成。
创建两个可绘制文件: 1.drawer_background
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="checked_background_color" android:state_checked="true" />
<item android:color="default_background_color" />
</selector>
2.drawer_text_background
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="checked_text_color" android:state_checked="true" />
<item android:color="default_text_color" />
</selector>
并将这两个属性添加到NavigationView中,即
app:itemIconTint="@drawable/drawer_background"
app:itemTextColor="@color/drawer_text_background"
如果某些颜色与其他颜色重叠,则另外
app:itemBackground="@android:color/transparent"
现在,您要做的就是将项目设置为在该项目的“单击侦听器”上选中,以更改背景和文本颜色。您可以通过编程方式进行。
答案 2 :(得分:0)
我解决了将此属性设置为我的NavigationView应用程序的问题:itemBackground =“ @ drawable / drawer_selector”
我的抽屉选择器如下所示
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@color/white" />
<item android:state_focused="true" android:drawable="@color/white" />
<item android:state_activated="true" android:drawable="@color/white" />
<item android:drawable="@color/orange" />