使用 android 可绘制形状的有效且结构化的方法是什么?
What is the efficient & structured way to use android drawable shape?
我需要在我的项目中使用不同设计的几个按钮。所以我使用可绘制形状来制作自定义按钮。
假设我需要一个带有圆角和绿色背景的按钮。所以我创建了一个形状 "gree_round_button.xml" 并且效果很好。但是话又说回来,我需要另一个具有相同样式的按钮,只是背景颜色会有所不同,为此我必须创建另一个 xml 文件,例如 "colorName_round_button.xml"?
为了便于理解,我尽量保持简单,但对于不同的按钮可能有许多通用样式,可能只有一两个 属性 不同。有什么方法可以跳过为同一设计创建多个文件吗?有什么方法可以用来扩展任何形状并且可以将颜色、背景颜色作为参数传递?
可能是这样的 "button.xml" 这个形状将接受一个颜色参数,我可以为我想使用的每个按钮使用这个形状,并将不同的颜色作为参数传递。
在网络中Css:我可以做这样的事情
.button {border: 1px solid #ddd;border-radius:5px;padding:20px;}
.button.green {background:green;}
有没有简单的方法可以做这样的事情。
谢谢
您应该看看 backgroundTint 这将允许您使用相同的可绘制对象但用不同的颜色覆盖它。
例如,您可以有一个 bg_circle.xml,它是一个白色圆圈。然后使用 tint 改变它的颜色,并将你的单独图标作为 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
就可以用作所有按钮的背景,并根据需要用不同的颜色着色。然后每个图标的内容都可以是它自己的可绘制对象。
下面的四个按钮只用了 3 个 drawable:
<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"
/>
我需要在我的项目中使用不同设计的几个按钮。所以我使用可绘制形状来制作自定义按钮。
假设我需要一个带有圆角和绿色背景的按钮。所以我创建了一个形状 "gree_round_button.xml" 并且效果很好。但是话又说回来,我需要另一个具有相同样式的按钮,只是背景颜色会有所不同,为此我必须创建另一个 xml 文件,例如 "colorName_round_button.xml"?
为了便于理解,我尽量保持简单,但对于不同的按钮可能有许多通用样式,可能只有一两个 属性 不同。有什么方法可以跳过为同一设计创建多个文件吗?有什么方法可以用来扩展任何形状并且可以将颜色、背景颜色作为参数传递? 可能是这样的 "button.xml" 这个形状将接受一个颜色参数,我可以为我想使用的每个按钮使用这个形状,并将不同的颜色作为参数传递。
在网络中Css:我可以做这样的事情
.button {border: 1px solid #ddd;border-radius:5px;padding:20px;}
.button.green {background:green;}
有没有简单的方法可以做这样的事情。 谢谢
您应该看看 backgroundTint 这将允许您使用相同的可绘制对象但用不同的颜色覆盖它。
例如,您可以有一个 bg_circle.xml,它是一个白色圆圈。然后使用 tint 改变它的颜色,并将你的单独图标作为 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
就可以用作所有按钮的背景,并根据需要用不同的颜色着色。然后每个图标的内容都可以是它自己的可绘制对象。
下面的四个按钮只用了 3 个 drawable:
<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"
/>