Я всегда использовал android:background="?selectableItemBackground"
для эффекта пульсации, когда щелкнул вид (a LinearLayout
). Кажется, я где-то читал, что это обратно совместимо с API 14.
Однако я обнаружил, что мне нужно использовать этот эффект пульсации, но на белом фоне. В частности, у меня есть макет элемента списка, который будет отображаться на цветном фоне по умолчанию (я расширяюсь от Theme.AppCompat.Light.NoActionBar
), поэтому я хочу, чтобы элемент списка выделялся из этого фона, окрашивая элемент списка plain white (#FFFFFF
).
Вот макет списка:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:background="?selectableItemBackground"
android:layout_width="match_parent"
android:layout_height="wrap_content">
...
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:paddingLeft="@dimen/mdu_keyline_1"
android:paddingRight="@dimen/mdu_keyline_1"
android:paddingTop="@dimen/mdu_padding_normal"
android:paddingBottom="@dimen/mdu_padding_normal">
...
</LinearLayout>
</FrameLayout>
Вышеизложенное создает эффект пульсации без белого фона.
Если я попробую:
<FrameLayout ...
android:background="@color/white">
Это, очевидно, производит белый фон, но без эффекта пульсации.
Я также пробовал что-то другое - и это дало результат, ближайший к тому, что я ищу:
<FrameLayout ...
android:background="@color/white">
...
<LinearLayout ...
android:background="?selectableItemBackground">
Приведенный выше дал мне белый фон с эффектом пульсации. Тем не менее, пульсация всегда, кажется, начинается с центра независимо от того, какую часть элемента я нажимаю.
Вот несколько скриншотов, показывающих текущий результат (игнорируйте тень в верхней части элементов списка - это тень от AppBarLayout
и Toolbar
, которые я использую).
Как я могу достичь желаемого эффекта?