Priya Singhal'ın yanıtladığı gibi, Android Studio ortak özellik adlarının kendi stil adlarında tanımlanmasını gerektirir. Artık kökte olamazlar.
Ancak, dikkat edilmesi gereken birkaç şey daha var (bu yüzden de bir cevap ekliyorum):
- Ortak stillerin görünümle aynı şekilde adlandırılması gerekmez. ( Bu cevaba işaret ettiğin için teşekkürler .)
- Bir ebeveyn ile miras kullanmanıza gerek yoktur.
Misal
Her ikisi de aynı öznitelikleri paylaşan iki özel görünüme sahip yeni bir projede yaptığım şey. Özel görünümler hala özniteliklerin adlarına sahip olduğu ve bir içermediği format
sürece, koddan normal olarak onlara erişebilirim.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- common attributes to all custom text based views -->
<declare-styleable name="TextAttributes">
<attr name="text" format="string"/>
<attr name="textSize" format="dimension"/>
<attr name="textColor" format="color"/>
<attr name="gravity">
<flag name="top" value="48" />
<flag name="center" value="17" />
<flag name="bottom" value="80" />
</attr>
</declare-styleable>
<!-- custom text views -->
<declare-styleable name="View1">
<attr name="text"/>
<attr name="textSize"/>
<attr name="textColor"/>
<attr name="gravity"/>
</declare-styleable>
<declare-styleable name="View2">
<attr name="text"/>
<attr name="textSize"/>
<attr name="textColor"/>
<attr name="gravity"/>
</declare-styleable>
</resources>
Kolaylaştırılmış örnek
Aslında, öznitelikleri özel bir isme koymam bile gerekmiyor. Onları format
en az bir özel görünüm için tanımladığım sürece (onlara a ), onları her yerde (olmadan format
) kullanabilirim. Bu da işe yarıyor (ve daha temiz görünüyor):
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="View1">
<attr name="text" format="string"/>
<attr name="textSize" format="dimension"/>
<attr name="textColor" format="color"/>
<attr name="gravity">
<flag name="top" value="48" />
<flag name="center" value="17" />
<flag name="bottom" value="80" />
</attr>
</declare-styleable>
<declare-styleable name="View2">
<attr name="text"/>
<attr name="textSize"/>
<attr name="textColor"/>
<attr name="gravity"/>
</declare-styleable>
</resources>
Büyük bir proje için, bu dağınık olabilir ve bunları tek bir yerde en üstte tanımlamak daha iyi olabilir ( burada önerildiği gibi ).
myattr1
dizeMyView1
içeri ve tamsayı içeri girdiğinde ne olurMyView2
?