好的人,我在這裏認真地堅持下去。深夜的東西,當你已經嘗試了所有的東西...更改Android複合TextView中的圖像 - 無法正常工作
我有一個複合的TextView與圖像在左邊。圖像(只是說「加載」的小圖片)設置爲:
Drawable img = getBaseContext().getResources().getDrawable(R.drawable.loading);
img.setBounds(0, 0, 120, 120);
tv.setCompoundDrawables(img, null, null, null);
tv是TextView變量。這工作正常。不過,後來我想更換新繪製的圖像,我試圖再次撥打setCompoundDrawables:
tv.setCompoundDrawables(new_img, null, null, null);
我還試圖獲得可繪爲TextView的陣列和更換左之一,如下所示:
Drawable[] drw = tv.getCompoundDrawables();
drw[0] = new_img;
代碼在調試模式下運行正常。沒有例外發生。 UI線程中執行的所有UI處理。圖像似乎沒問題,等等,但顯示不變。我需要以某種方式刷新顯示嗎?
順便說一句,如果有問題,TextView會添加到垂直LinearLayout中。我很確定我錯過了一些明顯的東西,但我看不到它。提前謝謝了。
(是的,我知道我可以用的ImageView和TextView的香草代替我的設計,但是性能方面的原因我寧願堅持一個複合的TextView如果可能的話)
您可以使用帶有自定義適配器的列表視圖,並使用延遲加載來顯示圖像。這樣一來,從你這邊來看就不那麼複雜了。 –
第二種方法我不希望工作正常,至少沒有'invalidate()'和'requestLayout()'。我期望通過觀察'TextView'源代碼來工作的第一種方法(我從未嘗試過自己改變這些...)。你可以嘗試用四個'null'值調用'setCompoundDrawables()',然後用新圖像調用'setCompoundDrawables()'。原則上,這四個'''''會使你回到原來的狀態,在這種情況下,新的'setCompoundDrawables()'應該和原來的一樣。 – CommonsWare
非常感謝你們。我不熟悉延遲加載,所以會看起來。此外,自定義適配器聽起來值得一試。 –