安卓无边框按钮按下状态背景颜色

4
如何在无边框按钮被按下时更改其背景颜色。我使用了以下代码:
    android:background="?android:attr/selectableItemBackground"
    android:text="@string/btn_skip" 

我的按钮显示为在“strings.xml”中定义的标签“SKIP”。

现在,当我测试它时,它很好,除了在按下状态时显示默认的“蓝色”颜色。我希望它与我的UI主题中的其他元素匹配,即“橙色”“#FF8800”。

有什么想法吗?

提前感谢您!

4个回答

3

在使用?android:attr/selectableItemBackground时,您可以在drawable文件夹中创建一个具有以下内容的xml文件。

<selector xmlns:android="http://schemas.android.com/apk/res/android"
    android:dither="true">

<item 
    android:state_pressed="true"
    android:drawable="@color/orange"/>
<item 
    android:state_enabled="false"
    android:drawable="@color/default"/>
<item
    android:drawable="@color/default"/>

</selector>

更新: 所以你需要将这些文件保存为:btn_drawable.xml在drawable文件夹中。

只需用*@drawable/btn_drawable.xml*替换?android:attr/selectableItemBackground


嘿@nimish-choudhry,感谢您的更新。您能告诉我如何引用上面的XML吗? - Mrugesh Mohapatra

2

谢谢@Nimish-Choudhary...!我遵循了你的建议,并为所有像我这样的初学者进一步解释了它以增强清晰度。

创建一个名为"btntransparent.xml"的xml文件。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
    android:dither="true">

<item 
    android:state_pressed="true"
    android:drawable="@color/pressed"/>
<item 
    android:state_enabled="false"
    android:drawable="@color/defaultColor"/>
<item
    android:drawable="@color/defaultColor"/>

</selector>

接下来,将颜色"pressed"和"defaultColor"添加到另一个名为"colors.xml"的xml文件中。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="pressed">#CCFF8800</color>
    <color name="defaultColor">#00000000</color>
</resources>

这里"#CCFF8800"是我的按下状态半透明橙色"#00000000"100%透明的黑色(;-),即不可见)。您可以在Color | Android Developers上了解更多关于颜色代码的信息。

现在将"colors.xml"文件放在values文件夹中,将"btntransparent.xml"文件放在drawable文件夹中。

现在最后一步就是,在按钮中使用它:

<Button
            android:id="@+id/id_btn_skip"
            android:background="@drawable/transparentbtn"
            android:onClick="skipToMain"
            android:text="@string/btn_skip" />

这应该能完成工作了...!

注意保重。
敬礼,
raisedadead


这种方法在Lollipop上不起作用,因此您需要为SDK> = 21创建一个具有涟漪效果的不同背景文件和一个用于早期版本的文件。 - Raffaeu

0

如果我理解正确,您可以在@drawable中添加新的资源,例如my_ripple.xml

<?xml version="0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
     android:color="#FF8800">
</ripple>

然后将其设置为您的背景即可。


-2
在您的主题中添加以下内容:
<item name="android:selectableItemBackground">#FF8800</item>

覆盖默认的蓝色。


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