Android - изменить цвет фона одного элемента в NavigationView - PullRequest
0 голосов
/ 25 мая 2018

В моем приложении есть стандартный Android, вид материала, навигация, и мне было интересно, смогу ли я изменить цвет фона только одного, первого элемента в списке.

Я пыталсясделать это, получив строку заголовка и установив BackgroundColorSpan, но при этом изменяется только цвет фона TextView.

val proItem = nav_view.menu.findItem(R.id.pro_item)
        val spanString = SpannableString(proItem.title)
        spanString.setSpan(BackgroundColorSpan(R.color.colorAccent), 0, spanString.length, 0)
        proItem.title = spanString

Я искал что-то похожее на тег app:itemBackground в NavigationView, но этоделает это для каждого элемента в списке, в то время как я хотел сделать это только для одного.

Есть ли способ достичь этого?

1 Ответ

0 голосов
/ 26 мая 2018

app:itemBackground можно использовать для изменения цвета фона.Вы можете создать селектор для проверенного состояния и ссылаться на него в xml.

selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- focused -->
    <item android:state_checked="true" android:drawable="@color/btn_color_green_alpha"></item>
</selector>

colors.xml

<color name="btn_color_green_alpha">#3300ff00</color>

файл макета

<android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:itemBackground="@drawable/selector"   //line to be added
        app:headerLayout="@layout/nav_header_main2"
        app:menu="@menu/activity_main2_drawer" />

Надеюсь, это поможет.

Если вам нужен только один элемент выбранного цвета и вы не хотите применять его к другим, вы можете сделать другие элементы отмечаемыми = false.

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:showIn="navigation_view">

    <group android:checkableBehavior="single">
    <item
        android:id="@+id/nav_camera"
        android:icon="@drawable/ic_menu_camera"
        android:title="Import" />
    <item
        android:id="@+id/nav_gallery"
        android:checkable="false"                  //line added here
        android:icon="@drawable/ic_menu_gallery"
        android:title="Gallery" />
    <item
        android:id="@+id/nav_slideshow"
        android:icon="@drawable/ic_menu_slideshow"
        android:title="Slideshow" />
    <item
        android:id="@+id/nav_manage"
        android:icon="@drawable/ic_menu_manage"
        android:title="Tools" />
    </group>
</menu>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...