ScrollView与listview的冲突问题汇总
来源:互联网 发布:数字电视机顶盒软件 编辑:程序博客网 时间:2024/05/16 07:18
ScrollView与listview的冲突问题汇总
两种滑动布局嵌套的时候会出现只能显示第一行,还有滑动事件冲突问题。SrcollView嵌套ListView、GridView,ListView嵌套ListView对于这情况。
解决办法一:出现这种布局,而且对于数据量都不会很大,这样重写ListView的onMeasure方法就可以了,让ListView的高度足够把所有的item都显示出来。
自定义:
MeasureSpec 有三种模式 由2进制的前两位来控制
MeasureSpec.EXACTLY:尺寸的值是多少,那么这个组件的长或宽就是多少。
MeasureSpec.AT_MOST:父组件有多大的空间就可以占多大空间。
MeasureSpec.UNSPECIFIED:可以随便用空间 不受限制。
public class Kescrlistview extends ListView {
public Kescrlistview(Context context) {
super(context);
}
public Kescrlistview(Context context, AttributeSet attrs) {
super(context, attrs);
}
public Kescrlistview(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);
}
}
解决办法二:
如果只是顶部布局需要和列表一起滑动,ListView具有HeaderView与FooterView2部分,因此,在非下拉刷新,上拉加载的话,可以使用ListView来代替ScrollView。
解决办法三:
主动计算和设置ListView的高度,感觉比较麻烦,不建议使用,代码如下:
public class Utility {
public static void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
return;
}
int totalHeight = 0;
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(0, 0);
totalHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
}
}
解决办法四:用到事件拦截机制事件的处理和传递,可以通过父View进行拦截,在事件冲突上
ScrollView 设置 android:fillViewport="true"
在listView的onTouch里面拦截ScrollView的事件,使得scrollView不可以获得点击事件,这样只有listView获得点击事件!
listview.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
scrollview.requestDisallowInterceptTouchEvent(true);
return false;
}
});
- ScrollView与listview的冲突问题汇总
- ScrollView与ListView的冲突问题
- ScrollView与ListView的冲突问题
- ScrollView与ListView冲突的问题
- ListView与ScrollView冲突问题
- ScrollView与ListView冲突问题
- ScrollView与ListView共存冲突保留ScrollView滚动的问题
- listView与ScrollView的冲突
- 完美解决ScrollView与ListView冲突问题(ListView与ListView的冲突)
- ListView(GridView)与ScrollView冲突的问题
- ScrollView与Listview嵌套使用时的滑动冲突问题
- 解决scrollview与listview冲突问题
- ListView/GridView与ScrollView Scrollbar冲突问题。
- ListView/GridView与ScrollView Scrollbar冲突问题。
- 解决ScrollView 与listview冲突问题
- ScrollView与ListView嵌套冲突问题
- listview 与 scrollview嵌套冲突问题
- ListView与ScrollView滑动冲突问题
- 原生JS写Ajax的请求函数
- Sublime Text2篇之注册及Pakage Control的安装
- Android开发工具常用快捷键大全
- typecho管理员帐号密码忘记的修改方法
- 不同位置的tcptrace分析以及FQ如何减少TCP无效重传
- ScrollView与listview的冲突问题汇总
- 自身学习效率与结果的思考
- 20. Valid Parentheses
- 02-HTML 基本骨架 、基本语法特性、 h 和 p 标签、图片、超级链接
- C#生成电子印章源码
- 使用TerminalAPP的生成UUID
- Android Studio(Gradle)解决库依赖冲突问题
- 青岛理工大学比赛 11.27 K: 麻烦的小卓
- javasript学习之一(函数)