android:attr风格如何工作?

我正在尝试通过布局构build一个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> 

这是行不通的(字体是正确的,但分隔线不见了)。

怎么…那个?

Solutions Collecting From Web of "android:attr风格如何工作?"

当你使用:

 style="?android:attr/listSeparatorTextViewStyle" 

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

不幸的是,风格是私人的,你不能扩展它,或者你不应该扩展它(参考,从谷歌看到这个错误报告 )。 你最好的select是复制整个样式, Widget.TextView.ListSeparator.WhiteWidget.TextView.ListSeparator不公开,所以也必须复制),在你的自定义样式中使用,而不是扩展从android平台的风格(见上面的链接这个响应 )。