我有一套类似的应用程序.我提取了常见的资源和代码到库项目和应用程序只是覆盖他们需要的.在我的图书馆中有以下样式定义:
<style name="ListItemText"> <item name="android:layout_toRightOf">@id/preview_image</item> <item name="android:textStyle">bold</item> <item name="android:textSize">@dimen/previewTextSize</item> </style>
您可以看到它包含android:layout_toRightOf属性,因为此样式将应用于ListView行中应显示在该行图像右侧的文本.
但是,在我的一个应用程序中,我想在图像下方显示文本.应该如何定义该应用程序中的ListItemText样式来覆盖android:layout_toRightOf属性值并将其替换为android:layout_below?
如果我将它定义为:
<style name="ListItemText"> <item name="android:layout_below">@id/preview_image</item> </style>
它会在图像右侧和下方显示文本,从库和应用程序样式XML中有效地总结属性.
p.s:我的问题的一个可能的解决方案是摆脱android中的android:layout_toRightOf,并将其移动到布局xml.然后在目标应用程序中,此布局可以重新定义/覆盖.但我正在寻找基于风格的解决方案,因为它可以提供更简单直接的属性覆盖方式.
(我也可以使用父属性继承的样式,但这将再次需要布局在应用程序中覆盖,我尽量避免).
解决方法
要禁用android:layout_toRightOf,可以将其设置为@null.如果你的应用程序定义了ListItemText样式如下,它应该按照你想要的方式工作:
<style name="ListItemText"> <item name="android:layout_toRightOf">@null</item> <item name="android:layout_below">@id/preview_image</item> </style>