Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 以编程方式更改可绘制资源_Android - Fatal编程技术网

Android 以编程方式更改可绘制资源

Android 以编程方式更改可绘制资源,android,Android,我有下面的xml资源代码,它是卡片项目列表的背景布局 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle"> <solid android:color

我有下面的xml资源代码,它是卡片项目列表的背景布局

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="#CABBBBBB"/>
            <corners android:radius="2dp" />
        </shape>
    </item>

    <item
        android:left="0dp"
        android:right="0dp"
        android:top="0dp"
        android:bottom="2dp"
        android:drawable="@drawable/kpop">
        <shape android:shape="rectangle">
            <solid android:color="#151B54"/>
            <corners android:radius="2dp" />
        </shape>
    </item>
</layer-list>
(以便每个卡片项目都有不同的背景图像)


有什么想法/建议我怎么做

您没有发布java代码。。我想这对你有帮助。 尝试在您自己的逻辑中使用此代码

yourCard.setBackgroundDrawable(getResources().getDrawable(R.drawable.kpop))


代码没有经过测试,但我认为它会起作用。。请留言询问任何问题。

您没有发布java代码。。我想这对你有帮助。 尝试在您自己的逻辑中使用此代码

yourCard.setBackgroundDrawable(getResources().getDrawable(R.drawable.kpop))


代码没有经过测试,但我认为它会起作用。。请发表评论,询问任何问题。

以下是您如何做到这一点:

  • 获取对图层列表的引用

    LayerDrawable layer=(LayerDrawable)yourView.getBackground()

    LayerDrawable layer=(LayerDrawable)context.getResources().getDrawable(R.id.yourLayerDrawable)

  • 创建可在内部绘制的图层的新实例

    layer.Mutate()

    Android内部缓存drawable,这意味着如果您修改通过上述方法获得的drawable,所有其他drawable都将受到影响。为了防止这种情况发生,您可以打电话告诉系统保留可提取文件的单独副本,这样就不会影响其他可提取文件

  • 设置要修改的项目的id

    android:id=“@+id/image\u background”

  • 像这样:


    以下是实现这一目标的方法:

  • 获取对图层列表的引用

    LayerDrawable layer=(LayerDrawable)yourView.getBackground()

    LayerDrawable layer=(LayerDrawable)context.getResources().getDrawable(R.id.yourLayerDrawable)

  • 创建可在内部绘制的图层的新实例

    layer.Mutate()

    Android内部缓存drawable,这意味着如果您修改通过上述方法获得的drawable,所有其他drawable都将受到影响。为了防止这种情况发生,您可以打电话告诉系统保留可提取文件的单独副本,这样就不会影响其他可提取文件

  • 设置要修改的项目的id

    android:id=“@+id/image\u background”

  • 像这样:


    如果真的管用,那就太棒了。我花了整整一天的时间在这上面。如果它真的起作用的话,那就太棒了。我花了整整一天的时间在这上面。我不能使它起作用。背景可绘制与可绘制不是一回事。背景可绘制与可绘制不是一回事。
    
    android:drawable="@drawable/kpop"
    
    yourCard.setBackground(R.drawable.kpop);
    
    <item
        android:left="0dp"
        android:right="0dp"
        android:top="0dp"
        android:bottom="2dp"
        android:id="@+id/image_background" <----
        android:drawable="@drawable/kpop">
        <shape android:shape="rectangle">
            <solid android:color="#151B54"/>
            <corners android:radius="2dp" />
        </shape>
    </item>