Изменение фона NavigationView на круглую форму не работает при нажатии - PullRequest
0 голосов
/ 01 декабря 2018

Я устанавливаю фон элемента навигации, используя app:itemBackground в макете:

<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/nav_selector_background"
        app:headerLayout="@layout/nav_header_main"
        app:menu="@menu/activity_main_drawer"/>

Здесь nav_selector_background.xml

<ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/colorNavItemSelected">
<item android:id="@android:id/mask">
    <color android:color="#000"/> <!-- any color will do -->
</item>

<item
        android:right="8dp">
    <selector>
        <item android:state_pressed="true" android:drawable="@drawable/nav_item_background_round"/>
        <item android:state_focused="true" android:drawable="@drawable/nav_item_background_round"/>
        <item android:state_checked="true" android:drawable="@drawable/nav_item_background_round"/>
        <item android:state_activated="true" android:drawable="@drawable/nav_item_background_round"/>
        <item android:state_active="true" android:drawable="@drawable/nav_item_background_round" />
        <item android:state_hovered="true" android:drawable="@drawable/nav_item_background_round" />
        <item android:state_drag_hovered="true" android:drawable="@drawable/nav_item_background_round" />
        <item android:drawable="@android:color/transparent"/>
    </selector>

</item>

И nav_item_background_round:

<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape>
            <solid android:color="@color/colorNavItemSelected"/>
            <corners android:bottomRightRadius="32dp"
                     android:topRightRadius="32dp"/>
        </shape>
    </item>
</layer-list>

Проблема в том, что когда я нажимаю на элемент, весь фон выделяется, как показано на скриншоте.Я хочу, чтобы только красная часть была выделена.

enter image description here

Я загрузил образец на Github , если кто-то заинтересован в компиляции и запускеприложение.

1 Ответ

0 голосов
/ 02 декабря 2018

Я не уверен, что вы хотите, но я думаю, что это решит вашу проблему.

nav_item_background_round.xml

<?xml version="1.0" encoding="UTF-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:color="#f816a463"
        tools:targetApi="lollipop">
    <item android:id="@android:id/mask">
        <shape android:shape="rectangle">
            <solid android:color="#f816a463" />
        </shape>
    </item>
</ripple>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...