2010-03-25 121 views
2

我試圖通過分別將其可見性屬性設置爲「可見」和「無效」來交換兩個LinearLayouts。我正在使用動畫,而佈局正在交換。動畫成功完成,我看到了正確的佈局。但是,將其可見性屬性設置爲「GONE」的以前版式仍然會收到點擊,即使它不可見。同時,只有在「GONE」佈局不可點擊的區域點擊時,「可見」佈局纔會收到點擊。我也在「可見」佈局上調用requestFocus方法。但它沒有幫助。此外,如果我跳過動畫部分並僅設置可見性屬性,則一切正常。Android LinearLayout動畫可見性問題

我在這裏錯過了什麼?

回答

2

如果您在動畫化小部件,您需要對佈局進行更改以使結果「堅持」。只要使用fillAfter的東西就會給你一些你看到的效果 - 它將它們繪製在新的位置,但它們並不是真的的新位置。

因此,我會先關閉動畫中的任何fill*設置(例如,fillAfter)。看看你的動畫的行爲如何。最有可能的是,它現在將描繪點擊告訴您的內容。

然後,設置一個AnimationListener以在動畫結束時獲得控制權,並在此時對小部件及其容器進行實際更改以影響您的最終位置。

Here is a sample project這證明了我的意思,雖然過於複雜的時尚,因爲我動畫自定義視圖,而不是一個現成的小部件。

+0

很酷。我從我的動畫中刪除了setFillAfter(true)。它的工作!我仍然不清楚什麼setfillAfter實際上做。您提供的示例項目似乎來自您的書。前幾天我正在經歷它,演示沒有奏效。今晚我會再試一次,以便更好地瞭解這個問題。謝謝您的幫助。 – adityad 2010-03-25 19:08:18

+0

這個樣本最後一次工作,我嘗試了... – CommonsWare 2010-03-25 19:20:41