Как переопределить (или скрыть) атрибуты стиля, определенные в проекте библиотеки Android?

У меня есть набор похожих приложений. Я извлек общие ресурсы и код в проект библиотеки, а приложения просто переопределяют то, что им нужно. В моей библиотеке определен следующий стиль:

<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 , но для этого снова потребуется переопределение макета в приложении, чего я стараюсь избегать).

11
задан Idolon 18 October 2011 в 11:43
поделиться