我正在尝试通过布局构建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>
这不起作用(字体是正确的,但分隔线已经消失)。
为什么......那个?
答案 0 :(得分:22)
当你使用时:
style="?android:attr/listSeparatorTextViewStyle"
您正在使用此属性指向的样式(listSeparatorTextViewStyle
)。如果您查看平台themes.xml
,您会看到实际用于此属性的样式为Widget.TextView.ListSeparator.White
。所以这是您应该在自定义样式中扩展的style
。
不幸的是,该样式是私有的,您无法扩展它,或者您不应该扩展它(作为参考,请参阅Google的this bug report)。您最好的选择是复制整个样式,Widget.TextView.ListSeparator.White
(Widget.TextView.ListSeparator
也不公开,因此也必须复制它),在您的自定义样式中使用它而不是扩展样式android平台(参见上面链接中的this response)。