ScrollView嵌套ListView冲突的最简洁解决方案

来源:互联网 发布:网络机顶盒频道列表 编辑:程序博客网 时间:2024/04/29 09:05

我们在做项目的时候,常常会遇到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! 妈妈再也不用担心我的学习了

当然网上还有其他解决方法,大家有兴趣的可以看看,不过相对于其他方法,这个方法真的是简洁,实用!简洁,实用!简洁,实用!


2 0
原创粉丝点击