我有一组类似的应用程序。我将共同的资源和代码提取到库项目中,应用程序只覆盖他们需要的内容。在我的库中定义了以下样式:
<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:layout_toRightOf
并将其移至布局XML中。然后,在目标应用程序中,可以重新定义/覆盖此布局。但我正在寻找基于样式的解决方案,因为它可以提供更简单和直接的属性覆盖方式。(我还可以使用带有parent
属性的继承样式,但这又需要在应用程序中进行布局覆盖,这是我想避免的)。