Добавьте делители и волновой эффект для каждого квадрата GridLayout - PullRequest
0 голосов
/ 19 ноября 2018

Я использую RecyclerView + GridLayout (3 столбца). Теперь, чтобы сделать каждый квадрат сетки более «отзывчивым», я хочу, чтобы каждый квадрат показывал своего рода разделитель и чтобы в каждом квадрате был эффект пульсации, который нажимает пользователь.

Редактировать: Я добавил android:foreground="?attr/selectableItemBackground", но ничего не происходит. Это XML-код одного элемента прямо сейчас:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="6dip" >

    <ImageView
        android:foreground="?attr/selectableItemBackground"
        android:id="@+id/icon"
        android:layout_width="128dp"
        android:layout_height="118dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_marginStart="12dp"
        android:layout_marginEnd="12dp"
        android:layout_marginTop="12dp"
        android:contentDescription="TODO"
        android:src="@drawable/ic_launcher_background" />
</RelativeLayout>

Вот как это выглядит в настоящее время: NoRippleDivider

И вот как я хочу, чтобы это выглядело так: enter image description here

Вот как это работает в настоящее время после исправления после добавления:

android:clickable="true"
android:focusable="true"
android:foreground="?attr/selectableItemBackground"

enter image description here

Ответы [ 3 ]

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

Вы можете создать рисование пульсации, как это, если хотите настроить его:

ripple.xml

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/colorPrimaryDark">
<item android:id="@android:id/mask">
    <shape android:shape="rectangle">
        <solid android:color="@color/colorPrimaryLight" />
        <!--<corners android:radius="@dimen/button_radius_large" />-->
    </shape>
</item>

<item android:id="@android:id/background">
    <shape android:shape="rectangle">
        <gradient
            android:angle="90"
            android:endColor="@color/background"
            android:startColor="@color/background"
            android:type="linear" />
        <!--<corners android:radius="10dp" />-->
    </shape>
</item>

и используйте его в вашем макете так:

android:clickable="true"
android:background="@drawable/ripple"

ИЛИ Вы можете просто сделать это так:

android:clickable="true"
android:focusable="true"
android:foreground="?attr/selectableItemBackground"
0 голосов
/ 20 ноября 2018

попробуйте этот способ для Ripple Effect в xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="6dip"
        android:clickable="true"
        android:focusable="true"
        android:background="?attr/selectableItemBackground">

        <ImageView

            android:id="@+id/icon"
            android:layout_width="128dp"
            android:layout_height="118dp"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_marginStart="12dp"
            android:layout_marginEnd="12dp"
            android:layout_marginTop="12dp"
            android:contentDescription="TODO"
            android:src="@drawable/ic_launcher_background" />
    </RelativeLayout>

и перейдите по этой ссылке для разделителей между элементами Как добавить разделители и пробелы между элементами в RecyclerView?

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

Вы можете добавить разделитель, добавив GridItemDecoration в ваше представление переработчика.Я предлагаю вам использовать this .

. Простой способ добавления пульсации при нажатии на элементы - это добавление переднего плана со значением selectableItemBackground к представлению вашего элемента:

android:foreground="?attr/selectableItemBackground"
...