在设置ImageButton时,我注意到它有一些灰色背景颜色与UI的其余部分不一致。
这是ImageButton的代码
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:src="@drawable/ic_material"/>
但是当我试图将背景覆盖为透明时,如下所示:
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:src="@drawable/ic_material"
android:background="@android:color/transparent"/>
按钮完全失去了形状和填充
有谁知道为什么会这样?
答案 0 :(得分:2)
这是因为您将颜色设置为背景,而且颜色没有尺寸/尺寸。
您可以使用任何图像作为背景进行检查,视图将采用该图像的大小。 我们可以说背景图像不支持缩放类型。
只有src支持ImageView或其他扩展ImageView的类的缩放类型
答案 1 :(得分:2)
imageButton有背景的原因是因为它是一个基本上带有图像而不是文本的按钮。所以根据android文档:
ImageButton 公共类 ImageButton扩展ImageView
显示一个按钮,其中包含可以按下的图像(而不是文本) 或者由用户点击。默认情况下,ImageButton看起来像 常规按钮,带有改变颜色的标准按钮背景 在不同的按钮状态。按钮表面上的图像 由android中的android:src属性定义 XML元素或通过setImageResource(int)方法。要删除 标准按钮背景图像,定义您自己的背景图像或 将背景颜色设置为透明。表明不同 按钮状态(聚焦,选择等),您可以定义不同的 每个州的形象。例如,默认为蓝色图像,橙色图像为 聚焦时,按下时为黄色。一个简单的方法 这是一个XML drawable“选择器”。例如:
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" /> <!-- pressed -->
> <item android:state_focused="true"
> android:drawable="@drawable/button_focused" /> <!-- focused -->
> <item android:drawable="@drawable/button_normal" /> <!-- default --> </selector>
将XML文件保存在项目res / drawable /文件夹中,然后将其作为
源代码的drawable引用ImageButton(在android:src属性中)。 Android会自动进行 根据按钮和状态更改图像 XML中定义的相应图像。的顺序 元素很重要,因为它们是按顺序评估的。这就是为什么 “普通”按钮图像是最后一个,因为它只会被应用 在android:state_pressed和android:state_focused之后都有 评价错误。请参阅按钮指南。
有关详细信息,请查看文档:{{3}}
答案 2 :(得分:0)
使用android:background="#000000"
或
imageButton.setBackgroundDrawable(null);