2016-02-17 12 views
5

stil-aile buXML @style android örneklerde

<style name="GreenText" parent="@android:style/TextAppearance"> 

gibi tanımlanır ama android kaynaklarda i

<style name="Widget.AppCompat.ActionBar.TabText" parent="Base.Widget.AppCompat.ActionBar.TabText"> 

bulmak farkı ne i @style ile önüne ne zaman ve @android: stil ya da değil mi?

cevap

0

, bu android tanımlanan bir kaynak arıyorsanız demektir paket, projenizde değil. Örneğin

, bir renk elde etmek için çalışıyorsanız:

android:background="@android:color/holo_red_dark" 

Bu Android holo_red_dark rengini alacak. Projenizde tanımlanan bu renk yok.

android:background="@color/my_red_color" 

Bu, projenizde tanımlanan "my_red_color" öğenizi alır.

Aynı stiller için de geçerlidir.

DÜZENLEME: şey projenizde derlenmiş bir stil için

parent="@style/MyStyle" 

ve

parent="MyStyle" 

arasında hiçbir fark ortaya çıkıyor. Aynı zamanda,

<style name="Widget.AppCompat.ActionBar.TabText" parent="@style/Base.Widget.AppCompat.ActionBar.TabText"> 

da yazabilirsiniz.Bu nedenle, Base.Widget.AppCompat.ActionBar.TabText projenizde destek kütüphanesi olarak hesaplandığından dolayı, önek olarak veya olmadan @style ile ekleyebilirsiniz. Ancak, @android:style/TextAppearance Android paketindedir ve bu nedenle önek olarak @android: belirtmeniz gerekir.

Ben şimdi

+0

evet, \ @ android: style ve \ @style arasındaki farkı fark eder, ancak parent = "\ @ style/TextAppearance" ve parent = "TextAppearance" arasındaki farkı ararım. – wutzebaer

+0

tamam, ya hiçbir değişiklik olmadığı anlamına gelir. Ebeveyn özelliğine \ @style öneki veya değil mi? – wutzebaer

+0

Evet - yalnızca başvurulan stil projenizde tanımlandığında (siz, geliştirici veya eklediğiniz herhangi bir kitaplık içinde - bu durumda destek kitaplığı). – DDsix

0

Kaynaklardaki geliştiriciler stil aldıkları için kendilerini tanımladılar.

Eğer tanımlarsanız

<style name="CodeFont" parent="@android:style/TextAppearance"> 
     <item name="android:textColor">#00FF00</item> 
    </style> 

Sen stillerden bir ebeveyni yazmaya gerek yok, ama sadece bu yüzden gibi

<style name="CodeFont.Red"> 
    <item name="android:textColor">#FF0000</item> 
</style> 

yazabilir. Buradan

Açıklama http://developer.android.com/guide/topics/ui/themes.html#Inheritance orada <style> etiketinde ana özellik olmakla birlikte, adı özniteliği (oluşturduğunuz bir stili) CodeFont tarzı adıyla başladığı için, bu tarz tüm devralan

Bildirimi Bu stildeki stil özellikleri. Bu stil, metni kırmızı yapmak için android: textColor özelliğini geçersiz kılar. Bu yeni stili @ style/CodeFont.Red olarak referans alabilirsiniz.

İsimlerinizi dönemlere göre zincirleyerek istediğiniz kadar bu şekilde miras almaya devam edebilirsiniz. Örneğin, CodeFont.Red ile, büyük olması uzatabilirsiniz: Eğer bir şeyin önünde "@android" koyarsanız, Genel

<style name="CodeFont.Red.Big"> 
    <item name="android:textSize">30sp</item> 
</style> 
+1

açıktır umut ama parrent özelliğini kullanırsanız, ben "@ tarzı /" ile öneki bir fark var? – wutzebaer

+0

Eğer tarzınız varsa, @style olmadan belirtebilirsiniz, aksi takdirde stil isminden önce koymalısınız. – davrog

+0

ama genellikle önek olmadan benim olmayan stilleri kullandım: