首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓ImageButton背景色

安卓ImageButton背景色
EN

Stack Overflow用户
提问于 2012-07-24 01:50:02
回答 5查看 24.5K关注 0票数 13

我有一个带有背景图像的ImageButton,它具有一定的透明度。默认情况下,该按钮将获得一个灰色背景,其中透明度像素与Holo.Light主题有关。我尝试通过setBackgroundColor(Color.TRANSPARENT)方法将按钮的背景色设置为透明。它工作得很好,除了现在我的按钮在聚焦/按下时不再有浅蓝色,而且看起来很平(它周围没有边框,所以它看起来像一幅图像)。

我在谷歌上搜索并看到,您可以按照解释的这里分配选择器,但这意味着我必须为每个按钮状态指定一个图像,我不想这样做。我想从主题继承焦点/按下的颜色,但覆盖正常的按钮背景(当没有按下/聚焦)为透明,而不是灰色。我怎样才能做到这一点?请提供一个工作的例子,因为我已经尝试了许多不同的组合,但没有成功。

编辑感谢大家的帮助。我想出了如何使这个工作,而不必重新创建相同的图像与聚焦和按下的状态为每个按钮!

这是我的解决方案:

我的按钮被定义为:

代码语言:javascript
复制
<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)定义如下:

代码语言:javascript
复制
<?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>
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-07-24 01:56:50

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

AFAIK您不能这样做,因为焦点/按下的颜色被内置到包含灰色背景的同一图像资源中。

如果您想要保持系统焦点/按压,但移除背景,则必须获取图像资源的副本(可以在/sdkroot/platforms/[version]/data/res/drawable-hdpi的SDK中找到该副本,用您所追求的任何级别替换版本)。如果需要的话,用另一个密度代替hdpi ),然后用照片编辑器从它们中编辑出灰色按钮。然后制作一个选择器,引用您修改过的图像,并将其设置为按钮的背景。

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

票数 1
EN

Stack Overflow用户

发布于 2012-07-24 01:58:04

您可以将某些内容放入xml文件中,例如,custom_button.xml,然后在按钮视图中设置background="@drawable/custom_button"

请参考此链接,因为有一个xml示例:具有不同颜色的标准Android按钮

我在我的代码中使用了它,它按照我想要的方式工作。

参考资料:具有不同颜色的标准Android按钮

编辑:

如果你想使用,也许你应该尝试设置一个边界。例如(参考:Android -按钮边框 ):

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
  android:shape="rectangle">
  <gradient android:startColor="#FFFFFF" 
    android:endColor="#00FF00"
    android:angle="270" />
  <corners android:radius="3dp" />
  <stroke android:width="5px" android:color="#000000" />
</shape>

或者,您可以尝试设置按钮的样式/主题。(但它将位于一个单独的文件中)样式/主题包含按钮的各种状态的颜色属性,如聚焦/启用/禁用/等等。

为了设置背景颜色/图像并单击突出显示效果,下面是一个示例(参考:如何以编程方式在视图中设置样式属性)

代码语言:javascript
复制
<?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/btn_pressed" />
  <item
    android:state_pressed="false"
    android:drawable="@drawable/btn_normal" />
</selector>

然后,可以通过设置属性“@android:background=/my_ then”将此选择器应用于按钮。

票数 3
EN

Stack Overflow用户

发布于 2013-08-15 23:48:50

您可以使用ImageView而不是ImageButton来解决问题。请将ImageView的安卓:背景属性设置为父级的背景色。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11623011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档