在TextView / EditText上使用“android:textAppearance”失败,但“样式”有效

时间:2011-03-17 10:16:05

标签: android

这是一个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。

2 个答案:

答案 0 :(得分:22)

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

<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 Developers Mailing列表中询问是否需要此行为。

答案 1 :(得分:1)

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

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