2011-08-22 54 views
0

我有这个相当奇怪的问题。我使用默认的Android外观来设计我的TextView,除了一个接缝外,所有接缝都完美无缺。主题特定的TextView外观并不总是有效

我使用的外观是?android:attr/textAppearanceSmall,它在更改字体颜色时没有任何问题,当我在布局XML设计器中更改HoloHolo.Light(Android 3.0+)之间的主题时。

但是,一个特定的TextView在平板电脑上运行时不会被设置样式,而是使用与其他设备完全相同的XML代码。

这里是为TextView我的XML代码不工作:

<TextView android:id="@+id/textView1" 
    android:text="TextView" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:layout_width="match_parent" 
    android:layout_marginTop="2sp" 
    android:lines="2" 
    android:gravity="top|center" 
    android:textAppearance="?android:attr/textAppearanceSmall"> 
</TextView> 

我也尝试使用下面的方法做它的代码,但是,这并不工作,要么:

setTextAppearance(this, android.R.attr.textAppearanceSmall); 

有没有想法?

回答

2

首先,我想指出的是,当使用相同样式(使用XML)对多个View组件进行样式设计时,对于该样式有creating Styles这种非常简洁的方式。

所以你的风格可能是这样的:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

    <!-- The Style for all the TextViews --> 
    <style name="TextViewStyle"> 
     <item name="android:layout_height">wrap_content</item> 
     <item name="android:layout_alignParentBottom">true</item> 
     <item name="android:layout_alignParentLeft">true</item> 
     <item name="android:layout_width=">match_parent</item> 
     <item name="android:layout_marginTop">2sp</item> 
     <item name="android:lines">2</item> 
     <item name="android:gravity">top|center</item> 
     <item name="android:textAppearance">?android:attr/textAppearanceSmall</item> 
    </style> 

</resources> 

虽然你只布局看起来像这样:

<TextView android:id="@+id/textView1" 
    android:text="TextView" 
    style="@style/TextViewStyle" 
/> 

<TextView android:id="@+id/textView2" 
    android:text="Another TextView" 
    style="@style/TextViewStyle" 
/> 

<!-- .... --> 

这使得更容易维护的代码,有助于防止错别字。


最后但并非最不重要,类似于您的问题的东西已经被讨论here。这也可能有助于解决您的问题。

+0

谢谢,这真的很有帮助,并解决了我的问题。我现在正在使用setTextAppearance(这个,android.R.style.TextAppearance_Small来代替。干杯! –

+1

总是乐意帮忙:D –

相关问题