我有这个相当特殊的问题。我正在使用默认的Android外观来设置我的TextView
样式,并且除了一个接缝之外的所有外观都可以完美地工作。
我正在使用的外观是?android:attr/textAppearanceSmall
,当我在布局XML设计器中并且在Holo
和Holo.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);
有什么想法吗?
答案 0 :(得分:2)
首先,我想指出,当样式多于一个View
- 具有相同样式的组件(通过使用XML)时,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。这也可能有助于解决您的问题。