是否有任何理由在通过自定义textAppearance样式设置时忽略textColor属性?
<style name="EditTextAppearance" parent="@android:style/TextAppearance.Widget.EditText"> <item name="android:fontFamily">sans-serif-medium</item> <item name="android:textSize">16sp</item> <item name="android:textColor">@color/blue</item> <!-- IGNORED --> </style>
在XML中设置样式:
<EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:textAppearance="@style/EditTextAppearance" />
由于某种原因,此样式不会覆盖默认主题控件颜色.
我能够设置颜色的唯一方法是在EditText中设置textColor属性(但这不是我想要的):
<EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:textAppearance="@style/EditTextAppearance" android:textColor="@color/blue" />
注意,为TextView创建的textColor的自定义textAppearance可以正常工作.
我试图用android.support.v7.widget.AppCompatEditText或android.support.design.widget.TextInputEditText替换EditText,但结果是一样的.还是行不通.所以问题不在EditText实现中.
我发现问题同样的问题Why is textColor in android:textAppearance ignored?.不幸的是,没有回答.
解决方法
沿着该行的某处,正在拾取和应用textColor的错误/默认值.你可以通过在XML中为EditText设置android:textColor =“@ null”来强制你在android:textAppearance中定义的android:textColor.