有没有办法在一种样式中为视图组的不同元素指定不同的样式?
例如,我有一个列表,其中每个项目都有标题,详细信息和分隔符。我希望能够在styles.xml中使用一个样式标记,将侧边填充应用于文本,但只将顶部/底部填充应用于分隔符。
我意识到我的想法可能会受到css的影响,我只是想知道在Android中是否有一个优雅的解决方案。
答案 0 :(得分:2)
一个样式可以有一个父项,结果视图应用属性“自上而下”,即子样式将覆盖冲突的父样式属性。
代码我最终使用(我有一个包含多个分隔符的列表,我只想在最后一个上填充):
<style name="ListItemSeparator">
<item name="android:background">android:attr/listDivider</item>
<item name="android:layout_height">1px</item>
</style>
<style name="LastListItemSeparator" parent="ListItemSeparator">
<item name="android:layout_marginBottom">20dp</item>
</style>
可以找到更多信息here
答案 1 :(得分:2)
如果只是你想要扩展的自己的样式,那么你可以使用点符号,如Android docs中所述,即你可以这样做:
<style name="ListItemSeparator">
<item name="android:background">?android:attr/listDivider</item>
<item name="android:layout_height">1px</item>
</style>
<style name="ListItemSeparator.LastListItemSeparator">
<item name="android:layout_marginBottom">20dp</item>
</style>
然后引用样式:
<View style="@style/ListItemSeparator.LastListItemSeparator"/>
答案 2 :(得分:1)
您可以在java中继承View,然后在xml中引用它。
然后,您可以将自定义视图子类化,以创建从其继承的视图。