2010-06-15 75 views
3

我有一個包含許多其他視圖(TextViews,ImageViews等)的ScrollView。 ScrollView比屏幕更高。我有一個AsyncTask基於http響應更新ScrollView的子項。Android ScrollView在調整大小時跳轉

我發現了一個有趣的行爲,我無法弄清楚如何解決。如果我將任何孩子的可見性設置爲View.InVISIBLE作爲AsyncTask.onPostExecute()的一部分,則一切正常。

但是,如果我將任何孩子的可見性設置爲View.GONE,則在調用onPostExecute()時,ScrollView從頂部跳下。究竟有多遠似乎有所不同。我猜測重新佈局ScrollView會導致它從頂端滾動出於某種原因。

所以問題是:有沒有辦法來防止或解決此行爲?

PS。使用ScrollView.jump(FOCUS_UP)作爲解決方法並不理想,因爲即使用戶打算向下滾動,該用戶也會強制頂部。

編輯:其實我錯了。問題不在於子視圖被標記爲不存在,問題在於兄弟視圖被標記爲消失,ScrollView得到調整。我的ScrollView在一個也包含一個Button的LinearLayout中。當按鈕被設置爲GONE時,ScrollView被調整大小以佔用可用空間,使其從頂部滾動。不同的原因,如果可能的話,仍然在尋找解決方法。

+0

如果View.INVISIBLE工作你爲什麼要改變它到View.GONE?我的猜測是,GONE實際上是崩潰的視圖,觸發一個完整的重繪您的ScrollView,INVISIBLE只是隱藏它,但我不能肯定地說, – mtmurdock 2010-06-15 20:56:57

+1

View.GONE是這些意見的首選,因爲我不想空白時意見是無形的。乾杯,邁克 – emmby 2010-06-15 21:30:16

+0

@emmby你能解決這個問題。我面臨類似的問題。 – 2013-03-26 14:35:32

回答

2

我有同樣的問題。如果佈局跳躍下面添加塔的頂部烏爾槓桿佈局

android:descendantFocusability="blocksDescendants" 

例子:

<LinearLayout 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:orientation="vertical" 
android:descendantFocusability="blocksDescendants" >