我用文本 View 制作了一些复选框和单选按钮,但它们在棒棒糖之前没有着色。

我的textview扩展了AppCompatCheckedTextView,其样式为:

<style name="CheckBoxStyle" parent="android:Widget.TextView">
    <item name="android:textAppearance">?android:attr/textAppearance</item>
    <item name="android:drawableRight">?android:attr/listChoiceIndicatorMultiple</item>
    <item name="android:drawableEnd">?android:attr/listChoiceIndicatorMultiple</item>
    <item name="android:clickable">true</item>
    <item name="android:background">?attr/selectableItemBackground</item>
    <item name="android:gravity">center_vertical</item>
    <item name="android:paddingTop">8dp</item>
    <item name="android:paddingBottom">8dp</item>
</style>

我在主题中定义了我的口音:
<style name="AppTheme.Platform.NoActionBar" parent="Theme.AppCompat.NoActionBar">
    <item name="android:selectableItemBackground">@drawable/press_overlay_dark</item>
    <item name="android:borderlessButtonStyle">@style/BorderlessButton</item>

    <item name="android:colorAccent">@color/color_accent</item>
    <item name="colorAccent">@color/color_accent</item>
</style>

我针对v21(最低v16)进行构建,并使用AppCompat v7-22.1.1。我的 Activity 扩展了AppCompatActivity

最佳答案

对于 Api级别23> = android:drawableTint="@color/colorPrimary"
对于 Api级别:

JAVA

private void setTextViewDrawableColor(@RecentlyNonNull TextView textView,@ColorRes int color) {
        for (Drawable drawable : textView.getCompoundDrawables()) {
            if (drawable != null) {
                drawable.setColorFilter(new PorterDuffColorFilter(getColor(color), PorterDuff.Mode.SRC_IN));
            }
        }
    }

使用: setTextViewDrawableColor(txtMyDemoText,R.color.colorPrimary)
Kotlin扩展功能
  fun TextView.setDrawableColor(@ColorRes color: Int) {
          compoundDrawables.filterNotNull().forEach {
              it.colorFilter = PorterDuffColorFilter(getColor(context, color), PorterDuff.Mode.SRC_IN)
        }
   }

USE: txtMyDemoText.setDrawableColor(R.color.colorPrimary)

关于android - AppCompat上的TextView色彩,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30671860/

10-09 04:32