【问题标题】:Using "android:textAppearance" on TextView/EditText fails, but "style" works在 TextView/EditText 上使用“android:textAppearance”失败,但“style”有效
【发布时间】:2011-03-17 10:16:05
【问题描述】:

这是一个 XML 格式的示例 TextView,它将正确地将样式 TextContactContactName 应用于 TextView。

<TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/photo"
        android:layout_alignTop="@id/photo"
        android:paddingLeft="10dp"
        android:text="First Last"
        style="@style/TextContactContactName"
        />

现在,我要在这个元素上设置其他一些与文本无关的东西。因此,我尝试移动 TextContactContactName 并通过“android:textAppearance”应用它

<TextView
    android:id="@+id/name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@id/photo"
    android:layout_alignTop="@id/photo"
    android:paddingLeft="10dp"
    android:text="First Last"
    android:textAppearance=@style/TextContactContactName"
    />

不幸的是,没有应用文本格式。

这就是样式(存储在res/values/styles-text.xml)的样子:

<style name="TextContactContactName">
    <item name="android:textSize">24sp</item>
    <item name="android:textColor">#333333</item>
    <item name="android:shadowColor">#ffffff</item>
    <item name="android:shadowDx">0</item>
    <item name="android:shadowDy">1</item>
    <item name="android:shadowRadius">1</item>
</style>

我是否使用了textAppearance 标签错误?

我在 Android 2.2 - HTC Desire 上进行了测试。

【问题讨论】:

    标签: android


    【解决方案1】:

    好吧,看来是我的错。我做了一个快速测试:

    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Text styled using 'style'."
            style="@style/UiTestTextView"
            />
    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Text styled using 'textAppearance'."
            android:textAppearance="@style/UiTestTextView"
            />
    

    还有styles-text.xml:

    <style name="UiTestTextView">
        <item name="android:textColor">#ff0000</item>
        <item name="android:textSize">16sp</item>
    
        <item name="android:shadowColor">#ffffff</item>
        <item name="android:shadowDx">1</item>
        <item name="android:shadowDy">2</item>
        <item name="android:shadowRadius">3</item>
    </style>
    

    关键是要记住shadow* 元素不是文本属性。因此不会通过 textAppearance 应用。

    我将在 Android 开发者邮件列表中询问这是否是所需的行为。

    【讨论】:

    • 您收到开发者的答复了吗?我也很高兴知道。
    • 澄清一下,如果您在通过textAppearance 应用的样式中包含非文本外观属性,则整个样式将无法应用?
    【解决方案2】:

    我提交了有关此问题的错误报告。我想我得到了标准回复“阴影不被视为文本外观的一部分”。

    http://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars&groupby=&sort=&id=35887

    【讨论】:

      猜你喜欢
      • 2016-11-25
      • 2016-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-17
      • 2020-01-20
      • 2017-09-22
      相关资源
      最近更新 更多