Android 以编程方式更改可绘制资源
我有下面的xml资源代码,它是卡片项目列表的背景布局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 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>