使用android可绘制形状的有效且结构化的方法是啥?
Posted
技术标签:
【中文标题】使用android可绘制形状的有效且结构化的方法是啥?【英文标题】:What is the efficient & structured way to use android drawable shape?使用android可绘制形状的有效且结构化的方法是什么? 【发布时间】:2017-01-18 20:37:26 【问题描述】:我需要在我的项目中使用不同设计的几个按钮。所以我使用可绘制的形状来制作自定义按钮。
假设我需要一个圆角和绿色背景的按钮。所以我创建了一个形状“gree_round_button.xml”,效果很好。但话又说回来,我需要另一个具有相同样式的按钮,只是背景颜色会有所不同,为此我是否必须创建另一个 xml 文件,如“colorName_round_button.xml”?
为了便于理解,我保持简单,但不同按钮可能有许多共同样式,可能只有一两个属性不同。有什么方法可以跳过为同一设计创建多个文件?有什么方法可以用来扩展任何形状,并且可以将颜色、背景颜色作为参数传递? 可能就像这个“button.xml”,这个形状将接受一个颜色参数,我可以将这个形状用于我想要使用的每个按钮,只需将不同的颜色作为参数传递。
在 Web Css 中:我可以做这样的事情
.button border: 1px solid #ddd;border-radius:5px;padding:20px;
.button.green background:green;
有没有简单的方法来做这样的事情。 谢谢。
【问题讨论】:
你可以extend View
并传递你想要的任何颜色参数。
我一定会检查的。谢谢
【参考方案1】:
您应该看看 backgroundTint 这将允许您使用相同的可绘制对象,但使用不同的颜色覆盖它。
例如,您可以有一个 bg_circle.xml,它是一个白色圆圈。然后使用 tint 更改它的颜色,并将您的单独图标作为 src。
<ImageButton
android:layout_
android:layout_
android:src="@drawable/ic_check_mark"
android:background="@drawable/bg_circle"
android:backgroundTint="@color/red"
/>
这样,您只需要一个round_button.xml
,您可以将其用作所有按钮的背景,并根据需要使用不同的颜色对其进行着色。然后每个图标的内容都可以成为自己的可绘制对象。
下面的四个按钮只有 3 个可绘制对象:
<ImageButton
android:layout_
android:layout_
android:src="@drawable/ic_feather"
android:background="@android:drawable/btn_default"
/>
<ImageButton
android:layout_
android:layout_
android:src="@drawable/ic_feather"
android:background="@android:drawable/btn_default"
android:backgroundTint="@color/colorPrimaryDark"
/>
<ImageButton
android:layout_
android:layout_
android:src="@drawable/ic_plane"
android:background="@android:drawable/btn_default"
android:backgroundTint="@color/colorPrimaryDark"
/>
<ImageButton
android:layout_
android:layout_
android:src="@drawable/ic_plane"
android:background="@android:drawable/btn_default"
android:backgroundTint="@color/colorAccent"
/>
【讨论】:
非常感谢您的精彩解释。刚刚将其标记为正确答案:)以上是关于使用android可绘制形状的有效且结构化的方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章