Android: изменить цвет навигацииПросмотреть выбранный элемент программно - PullRequest
0 голосов
/ 27 ноября 2018

Я создал ящик с навигацией.В другой части упражнения у меня есть кнопка.Когда я нажимаю на эту кнопку, я хочу, чтобы выбранный элемент навигационного представления изменил свой цвет.Вы знаете, как это сделать?

Редактировать: сейчас я попробовал это:

private void changeNavigationColor(int resColor){
    int[][] state = new int[][] {
            new int[] {android.R.attr.state_checked} // unchecked
    };
    int[] color = new int[] {
            getResources().getColor(resColor)
    };
    ColorStateList colorStateList= new ColorStateList(state, color);
    navigationView.setItemTextColor(colorStateList.getColorForState());
    navigationView.setItemIconTintList(colorStateList);
}

Но это меняет весь colorListState, тогда как я просто хочу изменить его состояние проверки

1 Ответ

0 голосов
/ 27 ноября 2018

Сделайте это:

    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:headerLayout="@layout/nav_header_dashboard"
        app:itemIconTint="@drawable/drawer_item"  // add this 
        app:itemTextColor="@drawable/drawer_item" // add this
        app:menu="@menu/activity_dashboard_drawer" />

hook_item.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="AFTER_CLICK_CHANGE_COLOR_TEXT" android:state_checked="true" />
    <item android:color="NAVIGATION_DRAWER_TEXT_COLOR" />
</selector>
...