我有一组类似的应用程序。我将公共资源和代码提取到库项目中,而应用程序只是覆盖了他们需要的东西。在我的库中定义了以下样式:
<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 的属性。
ps:我的问题的一种可能的解决方案是摆脱android:layout_toRightOf
样式并将其移至布局xml。然后在目标应用程序中可以重新定义/覆盖这个布局。但我正在寻找基于样式的解决方案,因为它可以提供更简单直接的属性覆盖方式。
(我也可以将继承的样式与parent
属性一起使用,但这将再次需要在应用程序中覆盖布局,我尽量避免)。