以编程方式创建一个LayerDrawable对象

6
我该如何通过编程方式创建这个可绘制对象?
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
  <bitmap android:src="@drawable/android_red"
    android:gravity="center" />
</item>
<item android:top="10dp" android:left="10dp">
  <bitmap android:src="@drawable/android_green"
    android:gravity="center" />
</item>
<item android:top="20dp" android:left="20dp">
  <bitmap android:src="@drawable/android_blue"
    android:gravity="center" />
</item>
</layer-list>
2个回答

19
直到我读了 @OctavianDamiean 回答下面的评论,才明白这一点。他的超链接已经失效,但是为了以编程方式设置 itemandroid:topandroid:bottom 等属性,可以参考 LayerDrawablesetLayerInset 方法。
setLayerInset (int index, int l, int t, int r, int b)

int index - 这是你想要修改的LayerDrawable数组中的Drawable的索引(你在构造函数参数中传入的)。
int l, t, r, b - 将它们设置为android:leftandroid:top等中的值。


10

这个功能在这里已经被详细描述了。只需通过传递一个Drawable对象的数组给构造函数创建一个新的LayerDrawable实例即可。


1
我对如何设置左、右、上、下参数和重力感兴趣。 - Gratzi
@Gratzi:只需阅读参考页面,您所需要的一切都在那里...永远如此。请查看http://developer.android.com/reference/android/graphics/drawable/LayerDrawable.html#setLayerInset(int, int, int, int, int)。 - Octavian Helm
“gravity”是一个“BitmapDrawable”属性,而不是图层的属性。因此,您必须使用xml或编程方式创建一个“BitmapDrawable”,并设置这个特定的属性。 - mbarrben

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接