android - 如何更改图层列表可绘制对象?

标签 android android-drawable

尝试学习一些新事物,但无法弄清楚这一点,感谢任何帮助。鉴于谷歌文档中的这个简单代码:

layers.xml:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/first_image">
      <bitmap android:src="@drawable/android_red"
        android:gravity="center" />
    </item>
    <item android:id="@+id/second_image" android:top="10dp" android:left="10dp">
      <bitmap android:src="@drawable/android_green"
        android:gravity="center" />
    </item>
    <item android:id="@+id/third_image" android:top="20dp" android:left="20dp">
      <bitmap android:src="@drawable/android_blue"
        android:gravity="center" />
    </item>
</layer-list>

还有main.xml:

<ImageView
    android:id="@+myImageView"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:src="@drawable/layers" />

问题:如何以编程方式引用图层列表中的一个可绘制对象,以便将其更改为不同的可绘制对象?

谢谢。

所以现在我有了想要在变量 myImage 中交换的新可绘制对象,对吗?现在我如何把它放到图层列表中?我假设我使用 findDrawableByLayerIdsetDrawableByLayerId,但究竟如何?或者我可能做错了!救命!

我想做什么?更改显示的可绘制对象。例如,假设我有另一个名为“android_purple”的drawable,我将如何将它切换为上面图层列表示例中的“android_green”drawable?

编辑:

根据我的有限知识,这里是我的代码(not 工作,我得到 setDrawableByLayerId 未定义的错误):

Resources res = getApplicationContext().getResources();
BitmapDrawable newImage = (BitmapDrawable) res.getDrawable(R.drawable.android_purple); //Get replacement image, can't use LayerDrawable or get error.   
boolean layer_drawable_changed = (setDrawableByLayerId((R.id.second_image), newImage)); //Set new drawable? Error on this line.

最佳答案

Question: How do I programmatically reference one of the drawables in the layer-list so I can change it to a different drawable?

这是我会尝试的:

第 1 步:输入 android:id <item> 上的属性如图所示的元素in the documentation

第 2 步:转换 getDrawable()结果为 LayerDrawable

第 3 步:调用 mutate()如果您不想影响使用 Drawable 的其他人(可能是可选的)

第 4 步:调用 setDrawableByLayerId()设置/替换 Drawable对于给定的图层 ID

关于android - 如何更改图层列表可绘制对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8018435/

相关文章:

android - 如何根据 EditText length() 测试更改默认的 ImageView 颜色?

android - 平板电脑需要哪些可绘制资源?

android - 如何在 Android 中将 <vector> 放入 <shape> 中?

android - 使用 ImageView ScaleType 设置 TransitionDrawable

android - Turbolinks Android 适配器 - 后退按钮从哪里开始

android - 如何在后台播放音频

android - 如何在 android 中使用 XML 形状创建一个右向箭头(人字形)?

java - 尝试从 ActivityManager.RunningTaskInfo 获取正在运行的应用程序图标时出错

java - SimpleDateFormat 返回 24 小时日期 : how to get 12-hour date?

android - 面部跟踪器 CameraSource Android : How to brighten front camera quality?