How to override (or hide) style attributes defined in the Android library project?
I have a set of similar applications. I extracted common resources and code to the library project and applications just override what they need to. In my library there is the following style defined:
<style name="List开发者_Python百科ItemText">
<item name="android:layout_toRightOf">@id/preview_image</item>
<item name="android:textStyle">bold</item>
<item name="android:textSize">@dimen/previewTextSize</item>
</style>
As you can see it contains android:layout_toRightOf
attribute as this style would be applied to the text in the ListView row which should be displayed to the right of the image in that row.
ListItemText
style in that application should be defined to override android:layout_toRightOf
attribute value and replace it with android:layout_below
?
If I define it as:
<style name="ListItemText">
<item name="android:layout_below">@id/preview_image</item>
</style>
it displays text to the right and below the image, effectively summing up attributes from both library and application styles XMLs.
p.s.: One possible solution of my issue would be to get rid of android:layout_toRightOf
in the styles and move it to the layout xml instead. Then in the target application this layout can be redefined/overridden. But I'm looking for style-based solution, since it could provide more simple and straightforward way of attribute overriding.
parent
attribute, but this would again require layout overriding in the application, which I try to avoid).To disable android:layout_toRightOf
, you can set it to @null
. If your app defines the ListItemText
style as follows, it should work as you want:
<style name="ListItemText">
<item name="android:layout_toRightOf">@null</item>
<item name="android:layout_below">@id/preview_image</item>
</style>
You could use "parent" to derive a specialized style (see http://developer.android.com/guide/topics/ui/themes.html) but defining the layouts like this with styles doesn't strike me as the way to carve this problem up. It's ok to leave some layout info in the layout files.
精彩评论