2011-08-23 63 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

所以我很困惑,是