我知道我加入聚会迟到了,但我在尝试自己解决同样的问题时偶然发现了这一点。
我所做的是:
根据您拥有的按钮组数量(例如 3 个),您需要对按钮进行子类化并创建三个自定义按钮类(见下文)
//Custom button 1
public class CustomButton1 extends Button {
public CustomButton1(Context context, AttributeSet attrs) {
super(context, attrs, R.attr.attrStyle1);
}
public CustomButton1(Context context, AttributeSet attrs, int defStyle) {
super(context, null, R.attr.attrStyle1);
}
}
//Custom button 2
public class CustomButton2 extends Button {
public CustomButton2(Context context, AttributeSet attrs) {
super(context, attrs, R.attr.attrStyle2);
}
public CustomButton2(Context context, AttributeSet attrs, int defStyle) {
super(context, null, R.attr.attrStyle2);
}
}
//Custom button 3
public class CustomButton3 extends Button {
public CustomButton3(Context context, AttributeSet attrs) {
super(context, attrs, R.attr.attrStyle3);
}
public CustomButton3(Context context, AttributeSet attrs, int defStyle) {
super(context, null, R.attr.attrStyle3);
}
}
你可以从自定义类中看到我已经传递了一个自定义属性。这些我在我的 styles.xml 中定义并将它们用作参考。请参阅下面的 style.xml:
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>
<style name="theme1">
<item name="@attr/attrStyle1">@style/CustomButton1</item>
<item name="@attr/attrStyle2">@style/CustomButton2</item>
<item name="@attr/attrStyle3">@style/CustomButton3</item>
<item name="android:background">@color/warning_yellow_colour</item>
</style>
<style name="CustomButton1" parent = "@android:style/Widget.Button">
<item name="android:textColor">@color/white_colour</item>
<item name="android:padding">20dp</item>
<item name="android:background">@color/banner_background_sensor_colour</item>
</style>
<style name="CustomButton2" parent = "@android:style/Widget.Button">
<item name="android:textColor">@color/white_colour</item>
<item name="android:padding">20dp</item>
<item name="android:background">@color/button_red_colour</item>
</style>
<style name="CustomButton3" parent = "@android:style/Widget.Button">
<item name="android:textColor">@color/white_colour</item>
<item name="android:padding">20dp</item>
<item name="android:background">@color/text_blue_colour</item>
</style>
<attr name="attrStyle1" format="reference"/>
<attr name="attrStyle2" format="reference"/>
<attr name="attrStyle3" format="reference"/>
通过将样式链接到 attr,您可以将该样式应用于您的自定义类,然后您可以根据需要多次复制该样式
CustomButton1 theme1 = (CustomButton1)findViewById(R.id.theme1);
CustomButton2 theme2 = (CustomButton2)findViewById(R.id.theme2);
CustomButton3 theme3 = (CustomButton3)findViewById(R.id.theme3);
希望这对某人有好处!