2011-08-23 17 views
8

Android'in küçük düğme stilini genişletmek istiyorum.Android XML'de, buttonStyleSmall veya Button.Small öğesini özel bir stilde bir üst stil olarak ayarlayabilir miyim?

<Button android:id="@+id/myButton" 
     style="?android:attr/buttonStyleSmall" 
     android:layout_alignParentRight="true" 
     android:layout_gravity="right" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:textSize="10dp" 
     android:text="Click Here"/> 

Ama kullanırlılık yararına, ben özel bir stil Bu stilleri aktarmak istiyorum: Ben satır içi yapabilirim. Bir stili ebeveyn olarak buttonStyleSmall (veya Widget.Button.Small?) Nasıl ekleyebilirim? Benim özel stil XML Bunun gibi:

<style name="RightLink" parent="?android:attr/buttonStyleSmall"> 
    <item name="android:layout_alignParentRight">true</item> 
    <item name="android:layout_gravity">right</item> 
    <item name="android:layout_height">wrap_content</item> 
    <item name="android:layout_width">wrap_content</item> 
    <item name="android:paddingLeft">2dp</item> 
    <item name="android:paddingRight">2dp</item> 
    <item name="android:textSize">10dp</item> 
</style> 

bu stili kullanan düğme bildirimiyle: Aşağıda Lukas tarafından açıklandığı gibi doğru sözdizimini kullanarak

<Button android:id="@+id/myButton" 
     style="@style/RightLink" 
     android:text="Click Here"/> 

DÜZENLEME

(@android:attr/buttonStyleSmall kullanmak Ebeveyn olarak), hala ikisi arasında bir fark görüyorum:

ButtonSty tuşu leSmall tarzı ve satır içi stilleri eklendi gibidir:

pic1

Özel stilini buttonStyleSmall ile ebeveyn olarak:

pic2

ben eksik?

+0

Merhaba, bunun için tüm çözüm nedir? Tam kod gönderebilir misin? – Emerald214

cevap

15

Standart bir Android stillerinden inherit style informations'u denediğinizde. Bunun için, zaten yaptığınız gibi parent -görüntüsünü kullanmanız gerekir.

standart bir stil miras Tek istisna bir @ değil kullanmak zorunda yani, bir ?:

<style name="RightLink" parent="@android:attr/buttonStyleSmall"> 

o stilleri farklı olduğundan (platform stilleri için bunun nasıl hakkında biraz daha sen Kendinizi yarattı) here bulunabilir.


Onunla uğraşırken sonra seni inhirate yolu doğru olduğunu bulundu, ancak başvuru yanlıştır: Bu işler

<style name="RightLink" parent="@android:style/Widget.Button.Small"> 

.

fark dikiş tamsayıdır sabit style -attribute kullanılarak ve bu kodu eklemek için kullanılır attr -subclass içinde Androidlerin R -Class bildirilen olduğu için.

XML stili tanımları (gerçekten miras alabileceğiniz), sınıfındaki -sınıfında saklanır. Yani yukarıdaki çizgi probleminizi çözmelidir.

+0

müthiş harika harika ..... keşke milyon kere oy verebilseydim. Teşekkürler – user4o01

+1

bu yüzden kafam karışık,