Android级联布局?

时间:2013-11-12 11:41:59

标签: android android-styles

有没有办法在一种样式中为视图组的不同元素指定不同的样式?

例如,我有一个列表,其中每个项目都有标题,详细信息和分隔符。我希望能够在styles.xml中使用一个样式标记,将侧边填充应用于文本,但只将顶部/底部填充应用于分隔符。

我意识到我的想法可能会受到css的影响,我只是想知道在Android中是否有一个优雅的解决方案。

3 个答案:

答案 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中引用它。

然后,您可以将自定义视图子类化,以创建从其继承的视图。