我用文本 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/