Я использую компонент материала. моя обычная кнопка выглядит так:
, и я настроил ее следующим образом
<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
<item name="materialButtonStyle">@style/StandardButtonStyle</item>
</style>
<style name="StandardButtonStyle" parent="Widget.MaterialComponents.Button">
<item name="backgroundTint">@color/green</item>
<item name="android:textColor">@color/white</item>
</style>
Теперь мне нужно сделать кнопка выглядит как на рисунке ниже (но без значка) программно для моего приложения до API 21.
до используя значок материала, я могу установить его с помощью drawable, как это
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" android:padding="10dp">
<solid android:color="#474241"/>
<corners
android:bottomRightRadius="10dp"
android:bottomLeftRadius="10dp"
android:topLeftRadius="10dp"
android:topRightRadius="10dp"/>
</shape>
, а затем установить его программно, как это
button.background = ContextCompat.getDrawable(mContext,R.drawable.inactive_button)
, но это больше не работает, теперь я запутался .....
Я пытался создать стиль, подобный этому
<style name="InactiveButtonStyle" parent="Widget.MaterialComponents.Button.OutlinedButton">
<item name="android:fillColor">@color/grey_light_medium</item>
<item name="android:textColor">@color/grey_dark_super</item>
<item name="android:textAllCaps">false</item>
</style>
, а затем применить его программно, как этот
button.setTextAppearance(mContext,R.style.InactiveButtonStyle)
, но это не так Работа. setTextAppearance
метод, который использует контекст в качестве входного аргумента, фактически устарел, и если я использую setTextAppearance
метод без контекста, не подходит для API 21 (минимум API 23). Я не знаю, если это причина того, что это не работает
, так как программно изменить цвет кнопки, используя компонент материала для Android API ниже 23?