Подтвердить что ты не робот

Android: у вас есть эффект пульсации, цвет состояния по умолчанию прозрачный?

Что-то вроде следующего, но оно не работает. Если я переключу выталкиваемый цвет на что-то вроде синего, он работает.

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="?android:colorControlHighlight">
    <item android:drawable="@android:color/transparent"/>
</ripple>
4b9b3361

Ответ 1

Необходимо добавить маску:

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="?android:colorControlHighlight">
     <item android:id="@android:id/mask">
       <color android:color="@android:color/white" />
     </item>
</ripple>

Ответ 2

Как-то ответ @JMPergar не работал у меня.

Тем не менее, я смог подумать об этом обходном пути: если цвет за прозрачной кнопкой является сплошным (не градиентом или пятнистым изображением), вы можете использовать этот цвет в качестве основной кнопки, не нажатой.

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
        android:color="@color/profile_transparent_button_pressed"
        >

    <item>
        <shape>
            <corners android:radius="@dimen/profile_transparent_button_corner_radius" />
            <solid android:color="@color/profile_background" />
        </shape>
    </item>
</ripple>

где @color/profile_transparent_button_pressed - цвет выделения кнопки, а @color/profile_background - цвет макета позади этой кнопки. Он работает точно так, как ожидалось, но все же определенно является обходным решением, поэтому сначала попробуйте ответить @JMPergar.