Mám skupinu podobných aplikácií. Do projektu knižnice som extrahoval bežné zdroje a kód a aplikácie jednoducho prepísali to, čo potrebujú. V mojej knižnici je definovaný nasledujúci štýl:
<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>
Ako vidíte, obsahuje android:layout_toRightOf
atribútom, pretože tento štýl by sa použil na text v riadku ListView, ktorý by sa mal zobraziť vpravo od obrázka v tomto riadku.
Avšak v jednej z mojich aplikácií by som rád zobrazil text pod obrázkom ListItemText
Štýl v tejto aplikácii by mal byť definovaný tak, aby nahradil android:layout_toRightOf
hodnotu atribútu a nahraďte ju android:layout_below
?
Ak to definujem ako:
<style name="ListItemText">
<item name="android:layout_below">@id/preview_image</item>
</style>
zobrazuje text napravo a pod obrázkom, čím efektívne sumarizuje atribúty z XML štýlov knižnice a aplikácie.
p.s .: Jedným z možných riešení môjho problému by bolo zbaviť sa android:layout_toRightOf
v štýloch a presunúť ho do rozloženia xmlmiesto. Potom v cieľovej aplikácii môže byť toto rozloženie predefinované / prepísané. Hľadám však riešenie založené na štýle, pretože by to mohlo poskytnúť jednoduchší a priamejší spôsob prekrývania atribútov.
(Viem použiť aj zdedený štýl parent
atribútu, ale to by znova vyžadovalo prepísanie rozloženia v aplikácii, ktorému sa snažím vyhnúť).
odpovede:
6 pre odpoveď č. 1Zakázať android:layout_toRightOf
, môžete ho nastaviť na @null
, Ak vaša aplikácia definuje ListItemText
Štýl by mal fungovať tak, ako chcete:
<style name="ListItemText">
<item name="android:layout_toRightOf">@null</item>
<item name="android:layout_below">@id/preview_image</item>
</style>
0 pre odpoveď č. 2
Dalo by sa použiť "rodič" odvodiť špecializovaný štýl (pozri http://developer.android.com/guide/topics/ui/themes.html), ale definovanie rozloženia, ako je toto, so štýlmi, ma nezaručuje, ako vyriešiť tento problém. Je v poriadku ponechať nejaké informácie o rozložení v súboroch rozloženia.