我已经搜索了几个小时的解决方案:如何应用一个简单的主题或样式到一个应用程序,一个活动或只是一个视图?看起来超级简单,但是我的样式总是被忽略。
下面是style.xml中的代码:<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="master" parent ="@android:style/Theme.NoTitleBar">
<item name="android:typeface">serif</item>
<item name="android:textColor">#8b8378</item>
</style>
</resources>
,下面是AndroidManifest.xml中的代码:
<application android:icon="@drawable/icon"
android:label="@string/app_name"
android:theme="@style/master">
和ListView中的代码
<ListView android:layout_height="wrap_content"
style="@style/master"
android:id="@+id/list"
android:layout_width="fill_parent">
</ListView>
什么都没发生字体样式,颜色都保持默认值。只能显式声明属性,如
<TextView android:gravity="center" android:typeface="serif" android:textColor="#8b7d6b" android:textAppearance="?android:attr/textAppearanceSmall" android:id="@+id/text_intro" android:layout_height="wrap_content" android:text="@string/welcome_text" android:layout_width="wrap_content" android:padding="20sp" android:layout_weight="0"></TextView>
。我知道eclipse不支持主题和样式的预览,但是它们也不能在模拟器上工作。
请帮助!我真不敢相信我已经为这个小问题纠结了一个星期了。提前感谢!
这里有一些关于Android样式和资源的事情。
Android样式是一个非常通用的设施,结果是一些配置是可能的,但无效的,将被忽略。你已经遇到了一些。:)
应用于视图时,样式将等同于在该视图上设置相同的属性。样式不会级联到子视图。 typeface
和textColor
在ListView上无效,因此它们被忽略。它们也不会以这种方式在主题上工作,因为主题为不同类型的视图提供默认样式。(为什么无效的属性会被忽略,而不是产生错误?因为在以后的平台版本中添加了新属性,旧的设备应该忽略它们不知道如何解析兼容性的额外属性。
完成你想做的事情的最好方法可能是:
- 创建textview的样式。(这不应该有一个父主题,就像你粘贴的代码一样)
- 使用
style=
语法将该样式应用于列表项布局中的TextView。