带@null背景的图像按钮(透明)

时间:2012-03-14 08:43:34

标签: android

我有一个带有透明度的图像源的图像按钮,但图像按钮的背景颜色是典型的灰色按钮颜色。

我想设置背景= @null,这样可以正常工作。

但是,当我按下此图像按钮时,我看不到表示我按下按钮的颜色。

如果我在按下按钮时删除background = @null,请更改用户知道您正在按的颜色。

我读到你可以创建一个带有3个图像的xml,指定按下按钮的时间,此正常情况以及何时聚焦。但我认为存在一种更容易的方法。

3 个答案:

答案 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>