通过自定义textColor样式设置textAppearance属性时,是否有任何原因会被忽略?

<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"
    />

由于某种原因,默认主题控件颜色不会被此样式覆盖。

我能够设置颜色的唯一方法是通过在textColor中设置EditText属性(但这不是我想要的):
<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="@style/EditTextAppearance"
    android:textColor="@color/blue"
    />

注意,为textAppearance创建的带有textColor的自定义TextView可以正常工作。

我试图用EditTextandroid.support.v7.widget.AppCompatEditText替换android.support.design.widget.TextInputEditText,但结果是相同的。还是行不通。因此,问题不在EditText实现中。

我发现了与Why is textColor in android:textAppearance ignored?相同的问题。不幸的是,没有答案。

最佳答案

沿线某处,正在提取并应用textColor的错误/默认值。您可以通过在XML中为android:textColor设置android:textAppearance来强制使用在android:textColor="@null"中定义的EditText

09-27 02:03