无法以编程方式更改 backgroundTint

订阅者

安卓工作室 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.* 样式作为父项
  • 使用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>

最后以编程方式更改文本颜色和背景颜色使用:

就像是:

    button.setBackgroundTintList(ContextCompat.getColorStateList(this,R.color.button_selector));
    button.setTextColor(ContextCompat.getColor(this, R.color....));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

以矢量资产为背景以编程方式更改ImageView的backgroundTint

更改MaterialButton的BackgroundTint

如何用ColorStateList以编程方式设置FloatingActionButton的backgroundTint?

如何使用BackgroundTint以编程方式设置按钮的背景色并用作背景@android:color / holo_orange_light

如何在不堆积行的情况下更改奇数行的backgroundTint?

AppCompatButton backgroundTint API <21

FloatingActionButton backgroundTint动画

无法以编程方式更改TextInputLayout提示重力

无法以编程方式快速更改 UIBarItem 的颜色

无法以编程方式更改UIButton的框架。

ForegroundTint “覆盖”按钮上的 backgroundTint?

无法在viewDidLoad中以编程方式更改constraint.constant:

react-native-modal-dropdown 无法以编程方式更改所选

设置命名颜色后,无法以编程方式更改UIView的颜色

无法在JavaScript中以编程方式更改音频源

无法更改以编程方式创建的UILabel中的文本大小

无法使用useState以编程方式更改组件的值

无法以编程方式更改 android 布局文件元素的值

我无法以编程方式在Android中将chmod更改为777

以编程方式更改密码

以编程方式更改TextStyle

以编程方式更改类型

以编程方式更改 StartupUri

以编程方式更改drawableLeftLeft

如何通过样式设置“ app:backgroundTint”?

棒棒糖的backgroundTint对Button无效

以编程方式更改根ViewController

以编程方式更改storyBoard的rootViewController

GradientDrawable以编程方式更改角度