android:attr风格如何工作?

我正在尝试通过布局构建一个 Android UI.我从以下开始:
<TextView
    android:id="@+id/..."
    android:layout_marginTop="8dip"
    android:text="..."
    style="?android:attr/listSeparatorTextViewStyle"/>

而且看起来不错(所有的帽子,较小的字体,下面的分隔线).现在我想扩展风格,所以我把它改成如下:

<TextView
    android:id="@+id/..."
    android:layout_marginTop="8dip"
    android:text="..."
    style="@style/section_title"/>

具有以下风格:

<style name="section_title" parent="@android:attr/listSeparatorTextViewStyle">
    <item name="android:layout_width">fill_parent</item>
    <item name="android:layout_height">wrap_content</item>
</style>

这不行(字体是正确的,但分隔线已经走了).

那怎么来的?

解决方法

使用时:
style="?android:attr/listSeparatorTextViewStyle"

你使用这个属性指向的样式(listSeparatorTextViewStyle).如果您在平台themes.xml中看到,实际用于此属性的样式是Widget.TextView.ListSeparator.White.所以这是您应该在自定义样式中扩展的风格.

不幸的是,这种风格是私人的,你不能扩展它,或者你不应该扩展它(参考,请参阅谷歌的this bug report).你最好的选择是复制整个样式,Widget.TextView.ListSeparator.White(Widget.TextView.ListSeparator不是公共的,所以也必须复制),在你的自定义样式和使用,而不是扩展风格从Android平台(见上述链接this response).

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...