android - 无法通过 onClick 事件更改按钮颜色,按钮变为紫色
问题描述
一旦按下按钮,我想将按钮的颜色更改为我在颜色/可绘制对象中创建的任何颜色,但按钮并没有按预期改变。我想我在这个网站上尝试了一切,但找不到解决方案。android:backgroundTint
没有成为解决方案。我只想将颜色更改为我创建的任何颜色而不是紫色。
<Button
android:id="@+id/button"
android:layout_width="254dp"
android:layout_height="62dp"
android:background="@color/white"
android:text="Press"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.496"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView"
app:layout_constraintVertical_bias="0.857" />
主题;
<resources xmlns:tools="http://schemas.android.com/tools">
<style name="Theme.YdsYokdil" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
</style>
主题(夜)
<resources xmlns:tools="http://schemas.android.com/tools">
<style name="Theme.YdsYokdil" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/purple_200</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/black</item>>
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_200</item>
<item name="colorOnSecondary">@color/black</item>
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
</style>
我的代码(改变颜色)
var isRedButtonsClicked = true
fun colorButtonsRed() {
binding.button.setBackgroundColor(R.color.red)
}
binding.button.setOnClickListener {
when (isRedButtonsClicked) {
true -> colorButtonsRed()
}
setContentView(binding.root)
解决方案
setBackgroundColor
需要一个颜色 int(0xFFFF0000
例如,它是 argb 格式的红色)R.color.red
是一个 ColorRes(来自 R 的资源标识符)
为了从R.color.xxx
我们应该使用的那些中获得颜色ContextCompat.getColor(context, R.color.xxx)
因此,将您的代码更改为
fun colorButtonsRed() {
binding.button.setBackgroundColor(
ContextCompat.getColor(context, R.color.red)
)
}
推荐阅读
- r - 我的 R geom_bar 图例中的“N = 1”框是什么,如何删除?
- javascript - 如何使用 JS 创建带有渐变行的表格?
- angular - 如何删除在 Firefox 上运行的 Videogular2 CuePoints 上的“轨道”?
- tinymce - tinyMCE - 是否可以防止在文本框中剪切和粘贴图像(base64)?
- java - Selenium 项目使用 android studio 构建失败
- r - R使用位置切割日期,而不是实际日期
- postgresql - 在 PostgreSQL 10 for Zabbix 3.4 中自动化本机范围分区
- amazon-mws - 我可以使用来自同一服务器的两个亚马逊 MWS 账户吗?
- video-streaming - 如何使用 JW Player 或 Video.js 播放 Google Drive 视频?
- python - 基于唯一列值创建列并填充