Android ImageButton背景色

Ayy*_*udy 12 android background imagebutton android-widget

我有一个ImageButton,背景图像有一些透明度.默认情况下,由于Holo.Light主题,按钮会获得透明像素所在的灰色背景.我尝试通过该setBackgroundColor(Color.TRANSPARENT)方法将按钮的背景颜色设置为透明.这很好,并且做我需要的东西,除了现在我的按钮在聚焦/按下时不再具有浅蓝色并且看起来相当平坦(没有边框,所以它看起来像图像).

我用google搜索,看到你可以像这里解释的那样分配选择器,但这意味着我必须指定每个按钮状态的图像,我不想这样做.我想继承主题中的焦点/按下的颜色,但是将正常的按钮背景(未按下/聚焦时)覆盖为透明而不是灰色.我怎么能实现那个?请提供一个工作示例,因为我尝试了许多不同的组合但没有成功.

编辑 谢谢大家的帮助.我想出了如何使这项工作无需为每个按钮重新创建具有聚焦和按下状态的相同图像!

这是我的解决方案:

我的按钮定义为:

<ImageButton
            android:id="@+id/ImageButton05"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:background="@drawable/button" />
Run Code Online (Sandbox Code Playgroud)

我的后台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>
Run Code Online (Sandbox Code Playgroud)

Foa*_*Guy 1

我想从主题继承焦点/按下的颜色,但将普通按钮背景(未按下/聚焦时)覆盖为透明而不是灰色。我怎样才能做到这一点?

据我所知,您不能,因为焦点/按下的颜色内置于包含灰色背景的相同图像资源中。

如果你想保持系统焦点/按下但删除背景,你必须获取图像资源的副本(可以在你的 SDK 中找到,将/sdkroot/platforms/[version]/data/res/drawable-hdpi[version] 替换为你想要的任何 api 级别。如果需要的话将 hdpi 替换为其他密度)并使用照片编辑器编辑掉其中的灰色按钮。然后创建一个引用修改后的图像的选择器,并将其设置为按钮的背景。

编辑: 这是聚焦和按下的默认全息按钮图像

专注的

按下