我们在做项目的时候,常常会遇到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.setFocusable(false);
listview.setFocusable(false);
注意:在xml布局里面设置android:focusable=“false”不生效
(更新:有朋友说这种方法不太好用,所以还是建议大家用第一种吧,我一直都是用第一种,嘿嘿)
注意:在xml布局里面设置android:focusable=“false”不生效
(更新:有朋友说这种方法不太好用,所以还是建议大家用第一种吧,我一直都是用第一种,嘿嘿)
是不是灰常简单嘞?so easy! 妈妈再也不用担心我的学习了
当然网上还有其他解决方法,大家有兴趣的可以看看,不过相对于其他方法,这个方法真的是简洁,实用!简洁,实用!简洁,实用!