【问题标题】:Why is textColor in android:textAppearance ignored? [duplicate]为什么 android:textAppearance 中的 textColor 被忽略? [复制]
【发布时间】:2016-09-17 14:36:59
【问题描述】:

我使用android支持库,我不知道哪个版本,因为我不知道如何检查它。我面临的问题显然是 android:textColor 属性的值被忽略了。如果我定义一种样式并将其分配给 EditText 的 textAppearance,则颜色 textColor 将被忽略。

所以,我有以下布局:

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <!-- This text should be red, but it is black -->
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Text color via TextAppearance"
        android:textAppearance="@style/TextAppearance.EditText" />

    <!-- The hint should be green, but it is grey -->
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Hint color via TextAppearance"
        android:textAppearance="@style/TextAppearance.EditText" />

     <!-- Text is red as set in android:textColor -->
     <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Text color via android:textColor"
        android:textColor="#880000"
        android:textSize="18sp" />

    <!-- Hint is green as set in android:textColorHint -->
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Hint color via android:textColorHint"
        android:textColorHint="#008800"
        android:textSize="18sp" />

</LinearLayout>

我定义了以下样式:

<!-- Text Appearance -->
<style name="TextAppearance.EditText" parent="">
    <item name="android:textColor">#880000</item>      <!-- this color is ignored -->
    <item name="android:textColorHint">#008800</item>  <!-- this color is ignored -->
    <item name="android:textSize">18sp</item>
</style>

这是支持库中的错误还是我遗漏了什么?

【问题讨论】:

    标签: android android-support-library


    【解决方案1】:

    在某处,textColor 的错误/默认值被拾取并应用。您可以通过在 XML 中为 EditText 设置 android:textColor="@null" 来强制使用您在 android:textAppearance 中定义的 android:textColor。这也适用于android:textColorHint。

    (这反映了accepted answer 到这个post。)

    【讨论】:

      【解决方案2】:

      使用

      style="@style/TextAppearance.EditText"

      而不是

      android:textAppearance="@style/TextAppearance.EditText"

      应该可以了!

      【讨论】:

      • 这背后的原因是什么?那么 android:textAppearance 是做什么用的呢?
      • 关注this链接并跳转到文本外观部分。您可能会对正确使用它有所了解。 :)
      • 我是如何使用它的。顺便提一句。如果你还没有读过这个问题,它主要是围绕为什么 textColor 属性被忽略?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-06
      • 2019-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多