2011-03-17 58 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

相關問題