Android:更改按钮文本和背景颜色

新手上路,请多包涵

按下按钮时如何使用 xml 更改文本和背景颜色?

要更改文本颜色,我可以这样做:

 <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:color="mycolor"/>
    <item android:color="mycolor2"/>
</selector>

要更改我可以做的背景(在具有可绘制参考的选择器/项目中使用它):

 <shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#FF0079FF" />
</shape>

但我怎么能两者兼得?假设我想要:

  • 默认值:黑色文本/白色背景
  • 按下:白色文字/蓝色背景

编辑:回答

我完全忘记了背景和文本颜色是分开管理的,所以我就是这样做的:

 <Button
    android:textColor="@color/filtersbuttoncolors"
    android:background="@drawable/mybackgroundcolors" />

在 mybackgroundcolors.xml 我管理背景,在 filtersbuttoncolors.xml 我管理文本颜色。在两个 xml 文件中,我管理状态(按下、选中、默认)

原文由 Maelig 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 693
2 个回答

这是一个可绘制的示例,默认情况下为白色,按下时为黑色:

 <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <shape>
            <solid
                android:color="#1E669B"/>
            <stroke
                android:width="2dp"
                android:color="#1B5E91"/>
            <corners
                android:radius="6dp"/>
            <padding
                android:bottom="10dp"
                android:left="10dp"
                android:right="10dp"
                android:top="10dp"/>
        </shape>

    </item>
    <item>
        <shape>
            <gradient
                android:angle="270"
                android:endColor="#1E669B"
                android:startColor="#1E669B"/>
            <stroke
                android:width="4dp"
                android:color="#1B5E91"/>
            <corners
                android:radius="7dp"/>
            <padding
                android:bottom="10dp"
                android:left="10dp"
                android:right="10dp"
                android:top="10dp"/>
        </shape>
    </item>
</selector>

原文由 Mitesh Shah 发布,翻译遵循 CC BY-SA 3.0 许可协议

只是补充@Jonsmoke 的回答。

对于 API 级别 21 及以上,您可以使用:

 android:backgroundTint="@android:color/white"

在 XML 中用于按钮布局。

对于低于 21 的 API 级别,请使用 AppCompatButton 使用 app 命名空间而不是 android 作为 backgroundTint

例如:

 <android.support.v7.widget.AppCompatButton
    android:id="@+id/my_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="My Button"
    app:backgroundTint="@android:color/white" />

原文由 Abdul Wadood 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题