安卓ImageButton获取灰色背景

4
我有一个带有漂亮背景选择器的按钮。很好。但是我想要一个图片代替按钮中的文本。我尝试将其更改为具有src属性的ImageButton。当我这样做时,我的选择器后面似乎覆盖了灰色背景,并且遮盖了src图像。
当我改回常规按钮时,问题就解决了。我想要的只是我的背景选择器加上src图像(而不是按钮文本)。
有什么想法吗?
4个回答

11

ImageButton应该设置android:background。

<ImageButton 
    android:id="@+id/ibArrow"
    android:layout_width="35px"
    android:layout_height="50px"
    android:src="@drawable/arrow"
    android:background="@drawable/backgroundstate" />   

并且是backgroundstate:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_selected="true" android:drawable="@color/transparent" />
        <item android:state_pressed="true" android:drawable="@color/transparent" />
    <item android:drawable="@color/transparent" />
   </selector>

1
我在图像按钮方面也遇到了同样的问题...但现在它已经很好地解决了 :) - Ajay
并且关闭选择器节点。 - Yauraw Gadav

2

就像 @kdumitru 所说的那样,但要使用正确的 XML 样式表:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true" android:drawable="@android:color/transparent" />
    <item android:state_pressed="true" android:drawable="@android:color/transparent" />
    <item android:drawable="@android:color/transparent" />
</selector>

0
我认为你可能没有在R.drawable中正确引用图像,也许你需要将图像放置在drawable文件夹中?ImageView确实可以工作。

0
你能发一张屏幕截图吗?很难确定你的意思,但听起来你的src图像可能没有正确的alpha通道。它是带有透明度的PNG吗?确保你的src图像是一个正确保存的、透明的PNG图像。

这是我尝试的其中一张图片的例子:http://cdn1.iconfinder.com/data/icons/humano2/128x128/actions/gtk-media-forward-ltr.png。为了解决这个问题,我使用了一个普通的按钮,移除了文本,通过android:drawableTop引用了图片,然后手动设置高度压缩了按钮。该方法正确显示了图像和背景。基于此,我的假设是图像是正确的。 - Jeffrey Blattman
你能截个屏展示一下问题是什么样子吗?你的透明度看起来没问题。 - Kevin Coppock

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接