无法在 Android 中应用主题和样式



我已经搜索了几个小时的解决方案:如何应用一个简单的主题或样式到一个应用程序,一个活动或只是一个视图?看起来超级简单,但是我的样式总是被忽略。

下面是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样式是一个非常通用的设施,结果是一些配置是可能的,但无效的,将被忽略。你已经遇到了一些。:)

应用于视图时,样式将等同于在该视图上设置相同的属性。样式不会级联到子视图。 typefacetextColor在ListView上无效,因此它们被忽略。它们也不会以这种方式在主题上工作,因为主题为不同类型的视图提供默认样式。(为什么无效的属性会被忽略,而不是产生错误?因为在以后的平台版本中添加了新属性,旧的设备应该忽略它们不知道如何解析兼容性的额外属性。

完成你想做的事情的最好方法可能是:

  • 创建textview的样式。(这不应该有一个父主题,就像你粘贴的代码一样)
  • 使用style=语法将该样式应用于列表项布局中的TextView。

相关内容

  • 没有找到相关文章

最新更新