2011-08-23 67 views
8

我想擴展Android的小按鈕樣式。我可以內嵌做到這一點:在Android XML中,我可以將buttonStyleSmall或Button.Small設置爲自定義樣式的父級樣式嗎?

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

但在可重用的興趣,我想這些樣式轉移到自定義樣式。如何將buttonStyleSmall(或Widget.Button.Small?)作爲父項添加到樣式中?像這樣的事情在我的自定義樣式XML:

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

與使用該樣式的按鈕聲明:

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

編輯

使用正確的語法如下由盧卡斯描述(使用@android:attr/buttonStyleSmall作爲父母),我仍然看到兩者之間的差異:

帶buttonSty的按鈕leSmall的風格和內嵌樣式補充說:

pic1

自定義風格buttonStyleSmall作爲父:

pic2

我缺少什麼?

+0

嗨,這是什麼整個解決方案?你能發佈完整的代碼嗎? – Emerald214

回答

15

所以你試着從標準的Android風格inherit style informations。爲此,您需要使用parent-屬性,因爲您已經這樣做了。

繼承了標準樣式時,唯一的例外是,你必須使用一個@不是?

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

一點關於如何做到這一點的平臺樣式(因爲從風格不同,你創建自己)可以找到here


玩弄它之後,我發現你inhirate的方式是正確的,但追索權是錯誤的:

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

這工作。

差異接縫是用於在代碼中使用style-屬性和代碼添加此的整數常量在attr子類中的Androids R -class中聲明。

XML樣式定義(您可以從中實際繼承)定義存儲在R-類的style子類中。所以上述行應該解決你的問題。

+0

真棒真棒真棒.....我希望我能投票它百萬次。感謝謝謝,謝謝 – user4o01

+1

所以我很困惑,是