我使用layerDrawable在底层图像(索引0)上构建一系列热点(索引1+)。热点是根据用户界面交互添加的,并且它们的位置是动态的,所以我是用编程的方式来完成所有这些工作,而不是使用xml。作为进一步(可能不相关)的细节,我使用一个片段来保持layerDrawable,因为这是在fragmentStatePageRadaper和viewPager的上下文中。
问题是,当我试图通过更改名为setDrawableByLayerID的层Drawable中的Drawable来更新图像时,图像不会更改(尽管方法返回true,表明它找到了层)。
我怎样才能让它工作?

最佳答案

在这里回答我自己的问题,希望对外面的人有用。我唯一能让它发挥我的HTC感觉的方法就是重新创建一个可以从头开始绘制的图层,再加上改变:

LayerDrawable oldLayerDrawable = (LayerDrawable) imageView.getDrawable();
Drawable[] layers = new Drawable[2];
layers[0] = oldLayerDrawable.getDrawable(0);
layers[1] = getResources().getDrawable(R.drawable.hotspot_dot);
LayerDrawable layerDrawable = new LayerDrawable(layers);
imageView.setImageDrawable(layerDrawable);

它不漂亮,但似乎这是一个已知的问题。

10-08 17:41