首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过代码将图层列表设置为视图的背景

通过代码将图层列表设置为视图的背景
EN

Stack Overflow用户
提问于 2013-04-23 05:32:53
回答 1查看 3.1K关注 0票数 3

在listview的适配器中,我用以下参数设置了孩子的背景:

代码语言:javascript
复制
view.setBackgroundResource(R.drawable.bg_checked);

下面是背景文件:

代码语言:javascript
复制
<?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来设置这种背景类型?

EN

回答 1

Stack Overflow用户

发布于 2013-04-23 05:52:24

您可以尝试使用LayerDrawable在代码中创建整个图层列表。我认为您只需在Resources对象上调用getDrawable(R.drawable.bg_layer1) (可以通过调用context.getResources()获得)来获取每一层,并将其放入Drawable数组中来构造LayerDrawable。然后将视图的背景可绘制设置为您的LayerDrawable

示例:

代码语言:javascript
复制
//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());
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16157098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档