Использование? SelectableItemBackground с белым цветом фона

Я всегда использовал android:background="?selectableItemBackground" для эффекта пульсации, когда LinearLayout например, LinearLayout ). Кажется, я где-то читал, что это обратно совместимо с API 14.

Тем не менее, я обнаружил, что мне нужно использовать этот эффект пульсации, но на белом фоне. В частности, у меня есть макет элемента списка, который будет отображаться на цветном фоне по умолчанию (я расширяюсь от Theme.AppCompat.Light.NoActionBar ), поэтому я хочу, чтобы элемент списка выделялся из этого фона, раскрашивая список Item 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 которую я использую).

Введите описание изображения здесь

Введите описание изображения здесь

Как я могу достичь желаемого эффекта?

Solutions Collecting From Web of "Использование? SelectableItemBackground с белым цветом фона"

Вы можете использовать передний план FrameLayout:

 <FrameLayout ... android:background="@android:color/white" android:foreground="?attr/selectableItemBackground"> 

Вы можете создать список слоев в своей папке drawables и установить это в фоновом режиме:

 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@android:color/white"/> <item android:drawable="?attr/selectableItemBackground"/> </layer-list>