我想更改图像按钮的背景。基本上,我拥有的图像在透明背景上看起来很棒,而当它们中的一堆都具有非透明背景时有点糟糕。
这应该很容易 - 只需android:background
将按钮上的按钮更改为透明颜色(通过可绘制):click_background.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true"><color android:color="#FF008080" />
</item>
<item android:state_pressed="true"><color android:color="#FF008080" />
</item>
<item><color android:color="#00000000" />
</item>
</selector>
然后按钮
<ImageButton
android:id="@+id/players"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:background="@drawable/click_background"
android:contentDescription="@string/players"
android:src="@drawable/speaker_tile" />
问题是我实际上想保留背景的state_focussed
和state_pressed
版本(我认为它是从主题派生的)。我希望在按下或选择按钮时出现背景(并以完全相同的颜色/可绘制显示),当按下按钮时主题通常会使用该背景会很有帮助。
我想知道是否有办法执行以下操作之一,但到目前为止都找不到任何内容:
定义一个选择器,它在某些方面从另一个继承(类似于主题可以从另一个继承的方式)。
创建一个全新的选择器,但让它的 XML 引用主题的颜色/可绘制 对象
state_focussed
并state_pressed
用于图像按钮。编辑:看起来这个选项已经失效了。我需要属性,但您不能从可绘制对象中引用它们。看这里
如果可能的话,我想在声明式 XML 而不是程序化 Java 中执行此操作。