我需要在项目中使用不同设计的几个按钮。所以我使用drawable shape来制作自定义按钮。
假设我需要一个圆角和绿色背景的按钮。所以我创建了一个形状“gree_round_button.xml”,这很好用。但是我再次需要另一个具有相同风格的按钮,只是背景颜色会有所不同,为此我必须创建另一个像“colorName_round_button.xml”这样的xml文件吗?
我保持简单的理解目的,但可能有许多共同的风格,不同的按钮可能只有一两个属性不同。有什么方法可以跳过为同一设计创建多个文件?有什么方法可以用来扩展任何形状,可能是通过颜色,背景颜色作为参数? 可能就像这个“button.xml”这个形状将接受一个颜色参数,我可以将这个形状用于我想要使用的每个按钮,并将不同的颜色作为参数传递。
在Web Css中:我可以做这样的事情
.button {border: 1px solid #ddd;border-radius:5px;padding:20px;}
.button.green {background:green;}
有没有简单的方法可以做这样的事情。 感谢。
答案 0 :(得分:2)
你应该看看backgroundTint这将允许你使用相同的drawable,但用不同的颜色覆盖它。
因此,例如,您可以拥有一个白色圆圈的bg_circle.xml。然后使用色调来改变它的颜色,并将你的单独图标作为src。
<ImageButton
android:layout_width="75dp"
android:layout_height="75dp"
android:src="@drawable/ic_check_mark"
android:background="@drawable/bg_circle"
android:backgroundTint="@color/red"
/>
这样您只需要一个round_button.xml
,您可以将其用作所有按钮的背景,并根据需要使用不同的颜色着色。然后,每个图标的内容可以是它自己的drawable。
下面的四个按钮只有3个抽屉:
<ImageButton
android:layout_width="75dp"
android:layout_height="75dp"
android:src="@drawable/ic_feather"
android:background="@android:drawable/btn_default"
/>
<ImageButton
android:layout_width="75dp"
android:layout_height="75dp"
android:src="@drawable/ic_feather"
android:background="@android:drawable/btn_default"
android:backgroundTint="@color/colorPrimaryDark"
/>
<ImageButton
android:layout_width="75dp"
android:layout_height="75dp"
android:src="@drawable/ic_plane"
android:background="@android:drawable/btn_default"
android:backgroundTint="@color/colorPrimaryDark"
/>
<ImageButton
android:layout_width="75dp"
android:layout_height="75dp"
android:src="@drawable/ic_plane"
android:background="@android:drawable/btn_default"
android:backgroundTint="@color/colorAccent"
/>