1. 程式人生 > >Android 開發中一些不得不知的坑(二)

Android 開發中一些不得不知的坑(二)

如何正確的在ScrollView裡做巢狀

日常開發中,經常會遇到ScrollView巢狀ListView,GridView或者是ViewPager,更有甚者是ScrollView巢狀ScrollView,這樣一來必然會導致一系列的問題,比如ListView顯示不全,滑動衝突等等。這裡就各種坑做一下總結。

巢狀的內容不可見

第一次遇見這種巢狀時,就是很單純的在ScrollView裡套了一個ListView,結果就是ListView只顯示一行,當時還一直以為是Adapter沒寫好,各種除錯,後來才想到這種巢狀的問題,各種百度之後解決,後來學聰明瞭,巢狀在ScrollView裡的控制元件,一般都需要繼續後自己動動手腳。

常見的解決辦法

  • 重寫onMeasure方法
@Override

/**   重寫該方法,達到使ListView適應ScrollView的效果   */ 

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,

MeasureSpec.AT_MOST);

super.onMeasure(widthMeasureSpec, expandSpec);

}

還有一種情況是,ScrollView裡巢狀的ViewPager不可見了,除非將ViewPager高度設定成固定值,但在實際當中,這完全是不可取的,這個時候就需要給

  • ScrollView設定屬性

android:fillViewport=”true”

再有一種情況就是第一次進入介面時動態載入listview的items後頁面會跳轉到listview的第一個子項,這個問題其實特別令人無語,尤其當下應用都是多個Fragment切換,每次一次都會莫名其妙的跳轉到ListView的第一行。關於這個問題的解決方法是,在findViewByID獲取到這個ListView後,做如下處理;

  • listView實現方法
listview.setFocusable(false);

好了,就下記下這些坑,以後遇到的繼續記。