我有这个简单的按钮XML:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@color/some_color" />
</shape>
</item>
我这样使用它:
<Button
android:textColor="#ffffff"
android:background="@drawable/buttonxml"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="String"
android:id="@+id/button"/>
问题是,通过这样做,我可以使用此按钮XML的唯一颜色是some_color。如果我想重用这个相同的布局,我需要创建另一个XML来改变颜色。有什么方法我可以重用按钮XML,只更改一些值?我想的是:
<Button
android:textColor="#ffffff"
android:background="@drawable/buttonxml"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="String"
android:id="@+id/button"
parent:color="@color/anotherColor"/>
答案 0 :(得分:3)
您可以在styles.xml
中创建自定义按钮样式以重复使用特定样式:
<style name="CustomButtonStyle" parent="@android:style/Widget.Button">
<item name="android:background">@drawable/buttonxml</item>
<item name="android:textColor">#ffffff</item>
</style>
您可以在布局中使用此样式:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="String"
android:id="@+id/button"
style="@style/CustomButtonStyle"
/>
textColor
为白色,background
为buttonxml
。
如果要覆盖单个属性,只需将其添加到yout布局中即可。它们将覆盖样式(主题样式和布局中的样式)
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="String"
style="@style/CustomButtonStyle"
android:textColor="@color/anotherColor"
/>
此处textcolor
将为anotherColor
,但background
仍为buttonxml
。
<强>替代强>
使用include重用整个布局。如果在include中添加属性,也可以覆盖属性。
<include android:id=”@+id/news_title”
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/anotherColor"
layout=”@layout/yourbuttonlayout”/>