gpt4 book ai didi

android - 无法以编程方式更改 backgroundTint

转载 作者:行者123 更新时间:2023-12-04 23:46:19 25 4
gpt4 key购买 nike

安卓工作室 3.6

在我的风格中。 xml

 <style name="buttonStyle">
<item name="android:textColor">@color/default_button_textColor</item>
<item name="android:backgroundTint">@color/button_bg_color</item>
<item name="android:textSize">18sp</item>
<item name="android:textAllCaps">true</item>
</style>

<style name="buttonClickStyle">
<item name="android:textColor">@color/button_bg_color</item>
<item name="android:backgroundTint">@color/button_click_bg_color</item>
<item name="android:textSize">18sp</item>
<item name="android:textAllCaps">true</item>
</style>

在xml布局中:
 <com.google.android.material.button.MaterialButton
android:id="@+id/buttonStartSearchBluetooth"
style="@style/buttonStyle"
android:layout_width="0dp"
android:layout_height="@dimen/button_height"
android:layout_margin="@dimen/button_margin"
android:onClick="onClickButtonStartSearch"
android:text="@string/start_search"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />

单击按钮时,我尝试像这样更改样式:
dataBinding.buttonStartSearchBluetooth.setTextAppearance(R.style.buttonClickStyle)

但它只改变文本颜色。不变 backgroundTint
为什么?

最佳答案

你的风格有一些问题。

  • 使用 MaterialComponents.Button.* style作为家长
  • 使用 backgroundTint而不是 android:backgroundTint
  • 使用 android:textAppearance定义您的文本样式

  • 就像是:
    <style name="buttonStyle" parent="@style/Widget.MaterialComponents.Button">
    <item name="android:textColor">@color/default_button_textColor</item>
    <item name="backgroundTint">@color/my_selector</item>
    <item name="android:textAppearance">@style/my_textAppearance</item>
    </style>
    <style name="my_textAppearance" parent="@style/TextAppearance.MaterialComponents.Button">
    <item name="android:textSize">18sp</item>
    <item name="android:textAllCaps">true</item>
    </style>

    最后以编程方式更改文本颜色和背景颜色使用:
  • 方法 setBackgroundTintList 更改背景颜色选择器。
  • 方法setTextColor更改文本颜色

  • 就像是:
        button.setBackgroundTintList(ContextCompat.getColorStateList(this,R.color.button_selector));
    button.setTextColor(ContextCompat.getColor(this, R.color....));

    关于android - 无法以编程方式更改 backgroundTint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58580723/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com