2013-03-12 59 views
2

我使用LayerDrawable在基礎圖像(索引0)上構建一系列熱點(索引1+)。熱點是基於用戶界面交互添加的,並且它們的位置是動態的,所以我以編程方式完成所有這些工作,而不是使用XML。作爲更多(可能不相關)的細節,我使用片段來保存LayerDrawable,因爲這是在FragmentStatePagerAdapter和ViewPager的上下文中。Android LayerDrawable.setDrawableByLayerId不工作在HTC Sensation(和其他?)

問題是,當我嘗試通過調用setDrawableByLayerId更改LayerDrawable中的Drawable來更新圖像時,圖像不會更改(儘管此方法返回true,表示它找到了圖層)。

我該如何得到這個工作?

回答

3

在這裏回答我自己的問題,希望對那裏的某個人有用。我能得到這個在我的HTC感覺工作的唯一方法是從頭開始重新創建LayerDrawable,加上變化:

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); 

這不是很漂亮,但似乎這可能是一個已知的問題。

0

的事情是, 「指數」 和 「ID」 是不同的屬性。 默認情況下,任何圖層的layerId總是等於-1。但您可以通過致電setId(index, id)明確設置,然後致電setDrawableByLayerId(id, Drawable)

相關問題