2010-07-29 33 views
2

我創建了一個自定義視圖,它本質上是一個Gallery對象,可以通過單擊TextView來隱藏和顯示(使用View.VISIBLE和View.GONE)。視圖狀態丟失,點擊

我在這個圖庫中放置的圖像有一個自定義背景StateListDrawable選擇器。一切正常,除了當圖庫從View.GONE變爲View.VISIBLE時,圖庫中圖像的狀態似乎會丟失,並且繪製的選擇器是默認可繪製(透明盒)。

這些項目在我選擇XML:

 
<item android:drawable="@drawable/red_box" android:state_pressed="true" /> 
<item android:drawable="@drawable/orange_box" android:state_selected="true" android:state_focused="true" /> 
<item android:drawable="@drawable/blue_box" android:state_selected="true" /> 
<item android:drawable="@drawable/translucent_box" /> 

最奇怪的是,從給startActivity一個電話回來後,狀態就會恢復,一切顯示正常,直到我隱藏和重新顯示畫廊。

我試着玩在選擇器中添加不同的狀態,並以編程方式嘗試刷新視圖...無濟於事。

任何想法?我敢肯定,它必須是微不足道的東西...

在此先感謝!

+0

當您的窗口小部件可見時,是否可以獲得聚焦/選定的視圖,保存並在返回到可見狀態時重新應用它? – Sephy 2010-07-29 08:12:02

+0

我曾試圖做到這一點,但無濟於事......因此這個問題的原因。此外,從我可以告訴,有一種方法來設置選定的狀態,但不是聚焦的狀態... – Justin 2010-07-29 17:48:01

回答

0

我能找到解決方案爲我的情況。我不確定這是最好的方法,但我仍然不知道是什麼導致了這種行爲,但是通過在我的畫廊的適配器上調用notifyDataSetChanged(),我能夠得到我想要的。

如果有人對如何解決問題有更好的建議(我的看起來可能有點矯枉過正),甚至是爲什麼發生這種情況的描述,我將不勝感激...我很好奇什麼是什麼正在幕後進行。

0

我不確定它是否相關 - 但是您是否需要實現View.verifyDrawable?關於什麼時候需要這樣做,文檔不太清楚。

startActivity默認會觸發動畫 - 這可能是迫使視圖正確刷新的原因。另一個可能的攻擊是觸發某種空的動畫。

+0

感謝您的建議,但覆蓋該方法後,我跨過調試器,該方法從未調用。 – Justin 2010-07-29 17:47:12