如何更改导航抽屉项目的颜色

时间:2018-10-08 13:29:27

标签: android

我想更改导航抽屉列表项的背景颜色,以使其在单击时被更改。 另外,它还应该更改该项目的文本和图标颜色。 在此先感谢。

3 个答案:

答案 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" />