Добавить пользовательскую форму ряби с помощью селектора в пункте меню навигации. - PullRequest
1 голос
/ 01 мая 2019

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

навигационный вид

<android.support.design.widget.NavigationView
    android:id="@+id/navigation_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:layout_marginEnd="8dp"
    app:itemIconTint="@color/drawer_item"
    app:itemTextColor="@color/drawer_item"
    app:itemBackground="@drawable/drawer_item_bg"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:menu="@menu/bottom_app_bar_menu"/>

drawer_item_bg.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_checked="true" android:drawable="@drawable/drawer_selected_item_bg"/>
<item android:state_checked="false" android:drawable="@android:color/transparent"/>
<item android:state_pressed="true" android:drawable="@drawable/custom_ripple_navitem"/>
<item android:state_selected="true" android:drawable="@drawable/custom_ripple_navitem"/>
<item android:state_focused="true" android:drawable="@drawable/custom_ripple_navitem"/>

custom_ripple_navitem.xml

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#360074FF">
<item android:id="@android:id/mask">
    <shape android:shape="rectangle">
        <corners android:radius="8dp"/>
    </shape>
</item>

Результат

enter image description here

1 Ответ

0 голосов
/ 10 июля 2019

«Решение»

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

Примечание: Это не настоящий волновой эффект, просто фальшивый.Дайте мне знать, если вы сделаете его улучшенную версию.

@layout/your_layout.xml

<android.support.design.widget.NavigationView
    ...
    android:theme="@style/Widget_NavigationItem_NoRipple"
    app:itemBackground="@drawable/drawer_item_background"/>

@values/styles.xml

<style name="Widget_NavigationItem_NoRipple">
    <item name="android:colorControlHighlight">@android:color/transparent</item>
</style>

@drawable/drawer_item_background.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/drawer_item_shape" android:state_checked="true"/>
    <item android:drawable="@drawable/drawer_item_ripple" android:state_pressed="true"/>
    <item android:drawable="@android:color/transparent" android:state_pressed="false"/>
</selector>

@ drawable / pocket_item_shape

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <corners android:radius="8dp"/>
            <solid android:color="@color/selectedItemBackgroundColor"/>
        </shape>
    </item>
</layer-list>

@ drawable / box_item_ripple

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@android:color/transparent">
    <item>
        <shape android:shape="rectangle">
            <corners android:radius="8dp"/>
            <solid android:color="?attr/colorControlHighlight"/>
        </shape>
    </item>
</ripple>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...