使用透明背景单击时,ImageButton不会突出显示

Ste*_*bbi 38 transparency android button

我已将ImageButton设置为透明,因此该图标与背景幕控面板(如Android ActionBar)相匹配.这看起来很好,因为我想要它.

但是,当背景透明时,按下操作栏中的透明按钮时,您看不到蓝色突出显示.

我可以拥有一个透明的ImageButton,点击时还有高亮显示吗?

<ImageButton
    android:id="@+id/nextItemButton"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:background="@null"
    android:src="@drawable/ic_media_ff" />
Run Code Online (Sandbox Code Playgroud)

小智 128

我遇到了同样的问题.最后,我得到了一个具有该属性的代码示例:

android:background="?android:selectableItemBackground"
Run Code Online (Sandbox Code Playgroud)

这个属性将为任何视图(Button,ImageButton,TextView ...)提供透明背景和可选择的高亮显示,而无需更多编码!

  • 很好的解决方案,但需要Api等级11:/ (7认同)
  • 如果您正在使用ActionBarSherlock,请改用android:background ="?selectableItemBackground". (3认同)

Tom*_*mik 37

您需要做的就是设置正确的背景.如果你希望它在正常状态下是透明的,在按压状态下是蓝色的.

在目录中创建一个类似这样的StateListDrawableres/drawable.

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/my_bluish_color" android:state_pressed="true"/>
    <item android:drawable="@android:color/transparent"/>
</selector>
Run Code Online (Sandbox Code Playgroud)

这样,默认背景是透明的.按下后,背景具有您指定的颜色(而不是颜色,您可以使用任何可绘制的颜色).


Udi*_*hef 5

只是加上费尔南德斯的好答案:

如果您希望效果为圆形而不是矩形使用:

android:background="?android:selectableItemBackgroundBorderless"    
Run Code Online (Sandbox Code Playgroud)

(*适用于V21及以上).