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