我有一个具有一定透明度的背景图像的 ImageButton。默认情况下,由于 Holo.Light 主题,按钮在透明像素所在的位置获得灰色背景。setBackgroundColor(Color.TRANSPARENT)
我尝试通过该方法将按钮的背景颜色设置为透明。这工作得很好,可以满足我的需要,除了现在我的按钮在聚焦/按下时不再具有浅蓝色并且看起来相当平坦(它周围没有边框,所以它看起来像一个图像)。
我搜索了一下,发现您可以按照此处的说明分配选择器,但这意味着我必须为每个按钮状态指定一个图像,而我不想这样做。我想从主题继承焦点/按下的颜色,但将普通按钮背景(未按下/聚焦时)覆盖为透明而不是灰色。我怎样才能做到这一点?请提供一个工作示例,因为我尝试了许多不同的组合但没有成功。
编辑 谢谢大家的帮助。我想出了如何做到这一点,而不必为每个按钮重新创建具有焦点和按下状态的相同图像!
这是我的解决方案:
我的按钮定义为:
<ImageButton
android:id="@+id/ImageButton05"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/button" />
我的背景 XML 文件(标题为 button.xml)定义如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<layer-list>
<item android:drawable="@drawable/btn_default_pressed_holo_light"></item>
<item android:drawable="@drawable/network_wifi"></item>
</layer-list>
</item>
<item android:state_focused="true">
<layer-list>
<item android:drawable="@drawable/btn_default_focused_holo_light"></item>
<item android:drawable="@drawable/network_wifi"></item>
</layer-list>
</item>
<item android:state_hovered="true">
<layer-list>
<item android:drawable="@drawable/btn_default_focused_holo_light"></item>
<item android:drawable="@drawable/network_wifi"></item>
</layer-list>
</item>
<item>
<layer-list>
<item android:drawable="@drawable/btn_default_normal_holo_light"></item>
<item android:drawable="@drawable/network_wifi"></item>
</layer-list>
</item>
</selector>