在listview的适配器中,我用以下参数设置了孩子的背景:
view.setBackgroundResource(R.drawable.bg_checked);下面是背景文件:
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<color android:color="@color/gold" />
</item>
<item>
<nine-patch
android:src="@drawable/bg_base_image"
android:dither="true" />
</item>
<item>
<bitmap
android:src="@drawable/bg_stripes_golden_image"
android:antialias="true"
android:dither="true"
android:tileMode="repeat" />
</item>
</layer-list>尽管如您所见,这个可绘制的是一个<layer-list>,其中包含一个带有重复图像的位图。问题是,当我用XML设置背景时,它工作正常,但当我用Java设置背景时,背景不重复,图像只是拉伸。有没有其他方法可以用Java来设置这种背景类型?
发布于 2013-04-23 05:52:24
您可以尝试使用LayerDrawable在代码中创建整个图层列表。我认为您只需在Resources对象上调用getDrawable(R.drawable.bg_layer1) (可以通过调用context.getResources()获得)来获取每一层,并将其放入Drawable数组中来构造LayerDrawable。然后将视图的背景可绘制设置为您的LayerDrawable。
示例:
//Method to get the LayerDrawable
private LayerDrawable getLayerDrawable(){
Resources res = context.getResources();
Drawable layer1 = res.getDrawable(R.drawable.first_layer);
Drawable layer2 = res.getDrawable(R.drawable.second_layer);
//...
Drawable layerX = res.getDrawable(R.drawable.x_layer);
return new LayerDrawable(new Drawable[]{layer1, layer2, layerX});
}
//Wherever you're setting the background, just do:
view.setBackgroundDrawable(getLayerDrawable());https://stackoverflow.com/questions/16157098
复制相似问题