我有一个带有透明度的图像源的图像按钮,但图像按钮的背景颜色是典型的灰色按钮颜色。
我想设置背景= @null,这样可以正常工作。
但是,当我按下此图像按钮时,我看不到表示我按下按钮的颜色。
如果我在按下按钮时删除background = @null,请更改用户知道您正在按的颜色。
我读到你可以创建一个带有3个图像的xml,指定按下按钮的时间,此正常情况以及何时聚焦。但我认为存在一种更容易的方法。
答案 0 :(得分:13)
按照上述答案,使用选择器drawable(对于背景,而不是null
),将默认状态设置为透明颜色:
* selector_with_transparency:*
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true" android:drawable="@drawable/pressed" />
<item android:drawable="@drawable/transparent" />
</selector>
压:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="#0077cc" />
</shape>
透明:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="#00000000"/>
</shape>
然后是ImageButton
:
background = "@drawable/selector_with_transparency"
答案 1 :(得分:2)
您删除了背景,因为您不喜欢它。使用state list的背景,取决于您如何触摸它,您自己不使用3张图像。换句话说,您没有显示按下按钮,您需要这样做。然后使用3张图片。只需使用您拥有的图像并创建另外两个图像,表明它已被聚焦并按下。
实施例: main.xml中
<?xml version="1.0" encoding="UTF-8"?>
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/background_color"/>
background_color.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/button_pressed" />
<item android:state_focused="true"
android:drawable="@drawable/button_focused" />
<item android:drawable="@drawable/button_normal" />
</selector>
这真的非常容易,只需将xml文件放在drawable文件夹中即可。 (RES /抽拉)
答案 2 :(得分:1)
默认情况下,android使用R.drawable.button_default(button.default.xml)作为后台,直到用户明确设置背景。 最好的方法是创建选择器。 android sdk中提到了类似的东西
<强> button_default.xml 强>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_window_focused="false" android:state_enabled="true"
android:drawable="@drawable/btn_default_normal" />
<item android:state_window_focused="false" android:state_enabled="false"
android:drawable="@drawable/btn_default_normal_disable" />
<item android:state_pressed="true"
android:drawable="@drawable/btn_default_pressed" />
<item android:state_focused="true" android:state_enabled="true"
android:drawable="@drawable/btn_default_selected" />
<item android:state_enabled="true"
android:drawable="@drawable/btn_default_normal" />
<item android:state_focused="true"
android:drawable="@drawable/btn_default_normal_disable_focused" />
<item
android:drawable="@drawable/btn_default_normal_disable" />
</selector>