将ImageButton的默认背景设置为透明色(使用AndroidX)

4

我正在使用 AndroidX 支持库。在我的清单文件中,我声明:

<application
        ...            

        android:theme="@style/AppTheme">

values.styles.xml中,我声明:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    ...

    <item name="android:imageButtonStyle">@style/MyImageButton</item>
</style>

<style name="MyImageButton" parent="Widget.AppCompat.ImageButton">
    <item name="android:background">@android:color/transparent</item>
</style>

接下来,我通过以下方式使用ImageButton:

<ImageButton
    android:id="@+id/image"
    android:layout_width="40dp"
    android:layout_height="40dp" />

很遗憾,我的ImageButton显示的是灰色背景而不是透明的背景。我该怎么做才能修复它?

3个回答

5
您需要替换这一行。
<item name="android:imageButtonStyle">@style/MyImageButton</item>

with

<item name="imageButtonStyle">@style/MyImageButton</item>

这也是另一种方法,由@prince提供。


1
在你的代码中添加这行内容:

style="@style/MyImageButton"

所以,

<ImageButton
    style="@style/MyImageButton"
    android:id="@+id/image"
    android:layout_width="40dp"
    android:layout_height="40dp" />

如果您不想在所有按钮标签中添加样式,可以按照此answer更改默认按钮的样式。希望它能帮助您。尝试一下,让我知道它是否有效。
谢谢。 愉快的编码 :)

0
您可以通过以下方式将ImageButtonbackground设置为null
<ImageButton
    android:id="@+id/image"
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:background="@null" />

这将使您的ImageButton透明。


1
这个问题是关于通过样式来摆脱为每个ImageButton做这件事的工作。您的答案不使用样式或以其他方式设置默认值。 - Christian

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