1

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

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

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

4

3 回答 3

2

如果只是您想要扩展您自己的样式,那么您可以使用点符号,如Android 文档中所述,即您可以这样做:

<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"/>
于 2013-12-09T11:19:45.273 回答
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>  

更多信息可以在这里找到

于 2013-11-14T09:38:09.747 回答
1

您可以在 java 中子类化 View,然后在您的 xml 中引用它。

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

于 2013-11-12T11:48:00.430 回答