2015-05-21 2 views
16

Я хочу программно удалить серый фон в ImageButton. Я попробовал много метод его удаления нравится -Прозрачный фон в ImageButton с пульсирующим эффектом?

imageButton.setBackgroundDrawable(null); 

но их реализации, я не получаю мультипликационный эффект на ImageButton на ощупь. (Нет подсветки при касании).

Есть ли способ удалить фон, но сохранить эффект пульсации или выделить.

+1

Возможный дубликат [Как установить фоновую подсветку на LinearLayout?] (Http://stackoverflow.com/questions/8732662/how-to-set-background-highlight-to-a-linearlayout) – rds

ответ

27

Если android:background="?attr/selectableItemBackground" это работает, чем я считаю, что этот ответ должен решить проблему:

https://stackoverflow.com/a/28087443/2534007

+3

Или даже лучше, '' 'android: background ="? Attr/selectableItemBackgroundBorderless "' '' – tskulbru

7

Создайте свой собственный RippleDrawable и вам нужно использовать маску для Ripple, если вы собираетесь использовать прозрачный фон.

<!-- A red ripple masked against an opaque rectangle. --/> 
<ripple android:color="#ffff0000"> 
    <item android:id="@android:id/mask" 
     android:drawable="@android:color/white" /> 
</ripple> 
+1

' требует уровня API 21 (текущий минимум 17)' все хорошие вещи, очевидно, будут полезны в течение нескольких лет, когда пользователи обновили ... –