【问题标题】:Android Border Less Button Pressed State Background ColorAndroid Border Less Button Pressed State 背景颜色
【发布时间】:2023-03-30 10:16:01
【问题描述】:

当按钮被按下时,我们如何改变无边框按钮的背景颜色。

我用过这个:

    android:background="?android:attr/selectableItemBackground"
    android:text="@string/btn_skip" 

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

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

有什么想法吗?

提前谢谢...!

【问题讨论】:

    标签: android android-layout android-ui android-button


    【解决方案1】:

    除了使用 ?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 in drawable 文件夹。

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

    【讨论】:

    • 嘿@nimish-choudhry 感谢您的更新。你能告诉我如何引用上面的xml吗?
    【解决方案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”添加到另一个xml比如“colors.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" />
    

    这应该做的工作......!

    保重。
    问候,
    提早了

    【讨论】:

    • 此方法不适用于 Lollipop,因此您需要为具有波纹效果的 SDK >= 21 创建一个不同的背景文件,并为以前的版本创建一个。
    【解决方案3】:

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

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

    然后只需将其设置为您的背景。

    【讨论】:

      【解决方案4】:

      在您的主题中添加以下内容:

      <item name="android:selectableItemBackground">#FF8800</item>
      

      覆盖默认的蓝色。

      【讨论】:

        猜你喜欢
        • 2021-04-08
        • 2020-01-25
        • 1970-01-01
        • 2021-04-05
        • 2011-07-02
        • 1970-01-01
        • 2012-07-22
        • 2012-06-10
        • 2023-04-03
        相关资源
        最近更新 更多