2015-02-03 1 views
23

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

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

Что вы имеете в виду, не работает? – iheanyi

+0

больше не пульсирует, если прозрачный цвет прозрачен. – ZakTaccardi

+0

Если прозрачный прозрачный, цвета не будет пульсировать. – iheanyi

ответ

81

Это необходимо, чтобы добавить маску:

<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> 
+4

Это должен быть признанный ответ. Это так! Спасибо! – Sotti

+1

Работает, как только я заметил, что цвет маски был БЕЛЫЙ (что имеет смысл, как только вы думаете об этом). –

+3

это может быть любой цвет или любой допустимый, но не прозрачный. – ataulm

2

Так или иначе, ответьте на @JMPergar «s не работает для меня.

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

<?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.