2011-10-15 8 views
10

Benzer uygulamalar kümesi var. Kütüphane projesine ortak kaynaklar ve kodlar çıkardım ve uygulamalar ihtiyaç duydukları şeyi geçersiz kılıyor.Android kitaplığı projesinde tanımlanan stil nitelikleri nasıl geçersiz kılınır (veya gizlenir)?

<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> 

Gördüğünüz gibi içerdiği android:layout_toRightOf bu tarzı olarak nitelik o resmin sağında gösterilmesi gereken ListView satırda metne uygulanır: Kitaplığımdaki tanımlanan aşağıdaki stil yoktur kürek çekmek.
Ancak, uygulamalardan birinde, resmin altındaki metni görüntülemek istiyorum. Bu uygulamadaki ListItemText stili, android:layout_toRightOf öznitelik değerini geçersiz kılmak ve android:layout_below ile değiştirmek için nasıl tanımlanmalıdır?

ben olarak tanımlarsanız:

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

etkili hem kütüphane ve uygulama tarzları XMLs gelen özelliklerini özetliyor, sağa ve görüntünün aşağıdaki metni görüntüler.

p.s .: Sorunumun olası bir çözümü, stillerden android:layout_toRightOf kurtulmak ve bunun yerine xml düzenine taşımak olacaktır. Daha sonra hedef uygulamada bu düzen yeniden tanımlanabilir/geçersiz kılınabilir. Ama stil temelli bir çözüm arıyoruz, çünkü daha basit ve basit bir özellik niteliği sunabiliyordu.
(Ayrıca, inerited stilini parent özniteliğiyle de kullanabilirim, ancak bu, yine uygulamada engellemeye çalıştığım mizanpajı gerektirir).

+0

Benzer bir şey yapıyorum BURADA !!! http://stackoverflow.com/questions/17103894/overriding-referenced-style-attributes – toobsco42

cevap

6

android:layout_toRightOf'u devre dışı bırakmak için @null olarak ayarlayabilirsiniz. Uygulamanız aşağıdaki gibi ListItemText stilini tanımlarsa, şu şekilde çalışmalıdır:

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

Amaçlandığı gibi çalışır, teşekkürler. Bu, 'null' referans belgelerinde bir yerde belirtildi mi? – Idolon

+1

Bildiğim kadarıyla bariz bir yerde değil, ama burada belirtildiği gibi, örneğin: http://developer.android.com/resources/articles/window-bg-speed.html –

0

"Ebeveyn" özelliğini özel bir stil elde etmek için kullanabilirsiniz (bkz. http://developer.android.com/guide/topics/ui/themes.html) ancak bu gibi düzenleri tanımlamak stillerle bu sorunu çözmenin bir yolu değildir. Yerleşim dosyalarında bazı düzen bilgilerini bırakmak tamam.

+0

Evet, "ebeveyn" hakkında biliyorum. Ancak, düzenimin kütüphanede tanımlandığından ve 'ListItemText 'stilini referans aldığı için durumumda yardımcı olmaz. Tarz uygulamasında stili yeniden tanımlayabilirim (bkz. P.s.), ancak stil tabanlı çözümün mümkün olup olmadığını bilmek isterim. – Idolon

İlgili konular