2011-03-17 149 views
18

这是一个XML示例TextView,它将正确地将样式TextContactContactName应用于TextView。在TextView/EditText上使用“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" 
     style="@style/TextContactContactName" 
     /> 

现在,我还有一些其他的事情要设置在这个元素,这是不是文字相关。因此我试图移动TextContactContactName并通过应用它“机器人: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:[email protected]/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。

回答

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

和风格,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开发人员邮件列表,如果这是所需的行为。

+3

你是否因此受到开发商的答案吗?我也很高兴知道这一点。 – artemkaxboy 2012-10-17 07:39:30

+0

要澄清是否将非文本外观属性包含在通过“textAppearance”应用的样式中,整个样式将无法应用? – AeroEchelon 2017-04-04 20:40:03

相关问题