我有一个按钮的样式,如:http://ace-subido.github.io/css3-microsoft-metro-buttons/buttons.html(参见剥离按钮)。 但我想能够将这种风格用于不同的颜色,而无需重新创建4个xml文件(选择器可绘制+ 3个按钮表示带有图层列表的绘图)。
在btn_stripped_orange.xml中(以及另外2个不同按钮状态的xml)我有一个颜色
使用这种语法,evrything是可以的: - )
但是我没有为每种不同的颜色创建4个新的xml文件,而是想“传递颜色”到btn_stripped_orange.xml(所以我应该将它重命名为btn_stripped.xml)。
在style.xml中,我必须调用@ drawable / btn_stripped_orange_selector 在此btn_stripped_orange_selector调用之后
我想我必须通过调用@ drawable / btn_stripped_orange_selector将border_color变量传递给styles.xml中的样式 我想用@ drawable / btn_stripped_orange_selector创建新的样式作为android:background(并重命名)和颜色变量
这是我正在尝试的代码(在eclipse中没有错误,但运行时app崩溃),如果我用颜色@ color / orange替换?attr / border_color例如,它可以很好地工作。我认为这只是一个语法问题。
我的themes.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="btn_orange" parent="@style/btStripped1">
<item name="border_color">@attr/border_color</item>
</style>
<attr name="border_color" format="color" />
</resources>
我的btn_stripped_orange_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/btn_stripped_orange_press" />
<item android:state_focused="true" android:drawable="@drawable/btn_stripped_orange_focus" />
<item android:drawable="@drawable/btn_stripped_orange" />
</selector>
我的btn_stripped_orange.xml(几乎与_focus和_press相同):
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="?attr/border_color" />
</shape>
</item>
<item android:left="5dp">
<shape android:shape="rectangle">
<solid android:color="#EEEEEE" />
</shape>
</item>
<item android:left="5dp">
<shape android:shape="rectangle">
<solid android:color="#EEEEEE" />
</shape>
</item>
</layer-list>
最后在我的styles.xml
中 <resources>
.....
<style name="btStripped1">
<!-- I want to pass a color variable here -->
<item name="android:background">@drawable/btn_stripped_orange_selector</item>
<item name="android:padding">6dp</item>
<item name="android:textColor">@android:color/black</item>
<item name="android:shadowColor">@android:color/white</item>
<item name="android:shadowDx">1</item>
<item name="android:shadowDy">1</item>
<item name="android:shadowRadius">1</item>
</style>
....
</resources>
我想要一个纯xml解决方案但是如果它不可能并且你有一些java代码的解决方案,那么欢迎你!
非常感谢你的帮助,对不起普通英语感到抱歉!