【发布时间】:2014-01-13 14:55:19
【问题描述】:
我的活动中有 6 个图像按钮,每个按钮都有不同的图像..
对于这 6 个图像按钮,我在每个按钮的可绘制文件夹中有 6 个 xml 按钮状态。
有什么方法可以让我将所有 6 个 xml 合并为 1 个单个 xml?
【问题讨论】:
-
为什么是 6?单个 xml 不是对所有人都有效吗?
-
我在问我是否可以为这 6 个按钮的不同状态提供一个 xml?
我的活动中有 6 个图像按钮,每个按钮都有不同的图像..
对于这 6 个图像按钮,我在每个按钮的可绘制文件夹中有 6 个 xml 按钮状态。
有什么方法可以让我将所有 6 个 xml 合并为 1 个单个 xml?
【问题讨论】:
是的,你可以。对于 6 个不同的图像,您不需要 6 个 xml,然后再为 6 个 XML 文件组合一个 xml。
您可以只拥有一个包含所有状态图像的 XML。
检查此示例。
选择器>如您所见,在这个单一的 xml 中,您可以直接引用图像(drawables)。
android:drawable="@drawable/btn_default_selected"
【讨论】:
请阅读: http://developer.android.com/training/improving-layouts/reusing-layouts.html
对于 findViewById(),您将拥有具有相同 id 的子视图;要找到这些视图,您必须找到根视图并使用该视图来查找其子视图的 id。 (例如,您可以使用 LinearLayout 作为按钮,这样您就可以拥有多个此类按钮。)
顺便说一句,如果 xml 是一个可绘制对象,您可以从所有按钮中引用该可绘制对象。
更新(是的,我知道在编辑问题后上面没有回答问题):
我为几个按钮使用了相同的背景可绘制对象(选择器)。前景是文本(实际上是一个 LinearLayout)。我建议您尝试重用相同的背景可绘制对象。
请注意,即使在文本按钮上也可以有图像,有 setCompoundDrawablesWithIntrinsicBounds(Drawable left, Drawable top, Drawable right, Drawable bottom) 和 setCompoundDrawablesWithIntrinsicBounds(int left, int top , int right, int bottom).
【讨论】: