/ / Як замінити (або приховати) атрибути стилю, визначені у проекті бібліотеки Android? - android, android-layout, стилі, перевизначення, android-бібліотека

Як переопределити (або сховати) атрибути стилю, визначені в проекті бібліотеки Android? - Android, android-макет, стилі, переопределення, бібліотека 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-файлів бібліотеки, так і стилів програм.

п.с .: Одним із можливих рішень мого питання було б позбутися android:layout_toRightOf у стилях та перемістіть його до макета xmlзамість цього. Тоді в цільовій програмі цей макет можна перевизначити / замінити. Але я шукаю рішення, засноване на стилі, оскільки воно може надати більш простий і зрозумілий спосіб заміни атрибутів.
(Я також можу використовувати успадкований стиль із parent атрибут, але це знову вимагає перевизначення макета в програмі, чого я намагаюся уникати).

Відповіді:

6 за відповідь № 1

Щоб вимкнути android:layout_toRightOf, ви можете встановити для нього значення @null. Якщо ваш додаток визначає ListItemText стиль наступним чином, він повинен працювати як завгодно:

<style name="ListItemText">
<item name="android:layout_toRightOf">@null</item>
<item name="android:layout_below">@id/preview_image</item>
</style>

0 для відповіді № 2

Ви можете використовувати "батьківський" для виведення спеціалізованого стилю (див http://developer.android.com/guide/topics/ui/themes.html), але визначення таких макетів із стилями не здається мені способом вирішити цю проблему. Це нормально, якщо залишити деяку інформацію про макет у файлах макета.