使用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文件中我管理状态(按下,选中,默认)
6 回答
这是一个drawable的例子,默认情况下是白色,按下时是黑色:
我认为这样做更简单:
你需要
import android.graphics.Color;
不是:import android.R.color;
或者你可以只写第一个字节设置alpha的4字节十六进制代码(不是3字节)
0xFF000000
.从API级别21开始,您可以使用:
你只需要在你的xml中添加它
在styles.xml中添加以下行
在按钮中,添加
android:theme="@style/AppTheme.Gray"
,示例:只是补充@Jonsmoke的答案 .
对于API级别21及以上,您可以使用:
在XML中用于按钮布局 .
对于低于21的API级别,使用 AppCompatButton 使用 app 名称空间而不是 android 作为backgroundTint .
例如:
创建应用程序时,将在res / values文件夹中创建名为styles.xml的文件 . 如果更改样式,则可以更改所有布局的背景,文本颜色等 . 这样您就不必进入每个单独的布局并手动更改它 .
styles.xml:
parent="@android:style/Theme.Light"
是Google的原生颜色 . 以下是原生样式的参考:https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/res/res/values/themes.xmlname="Theme.AppBaseTheme"
表示您正在创建一个继承parent="@android:style/Theme.Light"
中所有样式的样式 . 除非您想再次从AppBaseTheme继承,否则您可以忽略此部分 . =<style name="AppTheme" parent="AppBaseTheme">
@ drawable / custom_background是我放在drawable文件夹中的自定义图像 . 它是一个300x300 png的图像 .
#295055是深蓝色 .
我的代码更改了背景和文本颜色 . 对于Button文本,请查看Google的本地stlyes(我上面给出的链接) .
然后在Android Manifest中,记得包含代码: