我們在做項目的時候,常常會遇到ScrollView嵌套ListView(或GirdView)的問題,然而嵌套在 ScrollView的 ListVew(或GirdView)會資料顯示不全,那麼我們有什麼好的方法來解決這個問題呢?
下面給大家帶來的一個解決方法是本人自己用的,感覺特别簡潔,好用。
話不多說,上菜!
自定義一個ListView
/**
*預設顯示的首項是ListView,需要手動把ScrollView滾動至最頂端。
*舉例如下:
*mScrollView = (ScrollView) findViewById(R.id.mScrollView);
*mScrollView.smoothScrollTo(0, 0);
*@author 樹根
*
*/
public class ListViewForScrollView extends ListView {
public ListViewForScrollView(Context context) {
super(context);
}
public ListViewForScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ListViewForScrollView(Context context, AttributeSet attrs,
int defStyle) {
super(context, attrs, defStyle);
}
@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的ListView都用這個自定義的ListView就可以了。
注意:打開嵌套ListVew的 ScrollView的頁面布局 預設 起始位置不是最頂部
解決方法一:在代碼裡加這句就ok了
mScrollView.smoothScrollTo(0, 0);
解決方法二:把套在裡面的Gridview 或者 ListVew 不讓擷取焦點即可。
gridview.setFocusable(false); listview.setFocusable(false);
注意:在xml布局裡面設定android:focusable=“false”不生效
(更新:有朋友說這種方法不太好用,是以還是建議大家用第一種吧,我一直都是用第一種,嘿嘿)
是不是灰常簡單嘞?so easy! 媽媽再也不用擔心我的學習了
當然網上還有其他解決方法,大家有興趣的可以看看,不過相對于其他方法,這個方法真的是簡潔,實用!簡潔,實用!簡潔,實用!