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);

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章