无法通过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)
)
}

最新更新