里面的listview放这个就行了。
package com.angico.stub;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ListView;
import android.widget.ScrollView;
public class InnerListView extends ListView{
ScrollView parentScrollView;
public ScrollView getParentScrollView() {
return parentScrollView;
}
public void setParentScrollView(ScrollView parentScrollView) {
this.parentScrollView = parentScrollView;
}
private int maxHeight;
public int getMaxHeight() {
return maxHeight;
}
public void setMaxHeight(int maxHeight) {
this.maxHeight = maxHeight;
}
public InnerListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// TODO Auto-generated method stub
if (maxHeight > -1) {
heightMeasureSpec = MeasureSpec.makeMeasureSpec(maxHeight, MeasureSpec.AT_MOST);
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
System.out.println(getChildAt(0));
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
setParentScrollAble(false);
case MotionEvent.ACTION_MOVE:
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
setParentScrollAble(true);
break;
default:
break;
}
return super.onInterceptTouchEvent(ev);
}
/**
* @param flag
*/
private void setParentScrollAble(boolean flag) {
parentScrollView.requestDisallowInterceptTouchEvent(!flag);
}
}
分享到:
相关推荐
总之,解决ScrollView与ListView滑动事件冲突的关键在于正确处理触摸事件的分发,确保每个组件都能在合适的时候接收并处理滑动事件。通过自定义组件或者利用现有组件的特性,我们可以构建出更加符合用户体验的界面。...
3. **自定义滚动逻辑**:如果使用的是普通的ScrollView,可以重写其`onInterceptTouchEvent`和`onTouchEvent`方法,以便在ListView内容不足时,将滑动事件传递给ListView,当ListView滑动到边界时,再将事件交给...
在Android开发中,ScrollView和ListView的嵌套是一个常见的需求,但同时也伴随着许多技术挑战,主要问题在于两者都具有滚动功能,导致冲突,使得用户在滚动时可能会遇到不确定的行为。本篇将详细介绍如何解决这种...
本篇文章将详细讲解如何解决ScrollView与ListView滚动条冲突,并将这一解决方案扩展到其他具有滚动条的控件。 首先,我们来理解问题的本质。ScrollView是一个可以包含多个子视图的垂直滚动容器,而ListView则是一个...
接下来,我们要实现ListView滑动到底部或顶部后还能继续拖拽一段距离,松手后自动回弹的效果。这可以通过监听ListView的滑动状态并结合Scroller类来实现。以下是一般步骤: 1. **监听滑动状态**:通过重写ListView...
1. 设置ListView的`android:nestedScrollingEnabled="false"`属性,防止ListView内部的滚动事件传递到ScrollView。 2. 自定义ScrollView并重写`onInterceptTouchEvent()`和`onTouchEvent()`方法,根据触摸事件的坐标...
这类问题通常表现为:当ScrollView内部包含一个ListView或GridView时,用户滑动屏幕时可能无法正常滚动列表中的项,而是整个ScrollView一起滚动,或者出现其它不可预料的行为。下面将详细介绍这种滑动冲突的原因以及...
当ScrollView正在滚动时,可以禁用ListView的滑动,反之亦然。 在提供的压缩包文件中,"解决双重滚动问题"可能包含了针对这些问题的一些解决方案或示例代码。不过,由于无法直接查看代码,你需要自行解压并研究其中...
然而,系统默认的ListView是不建议直接嵌套在ScrollView内的,因为两者都有滚动功能,这可能导致冲突和性能问题。为了克服这个问题,开发者常常需要自定义ListView来适应ScrollView的环境。 首先,我们要理解为什么...
很多朋友因项目需求问题需要在ScrollView中嵌套使用ListView或ScrollView 但是彼此的滑动事件会发生冲突,网上大多数都是计算ListView的高度来解决这个问题,但个人亲手尝试 结果ListView的Item要是过多的话ListView...
当需要在一个界面中同时展示大量数据和一些额外内容时,可能会将ListView嵌套在ScrollView中,但这种做法往往会导致滑动冲突的问题,即用户难以确定是想滚动整个ScrollView还是单独滑动ListView。本文将深入探讨这个...
在ScrollView和ListView的组合中,可以尝试用NestedScrollView替换ScrollView,这样可以自动处理内部的滑动事件,避免冲突。 ```xml android:layout_width="match_parent" android:layout_height="match_parent...
问题在于,当ListView被放在ScrollView中时,由于ListView自身已经具备了滚动功能,这可能导致ScrollView无法正确检测到ListView的滚动事件,进而使得整个嵌套结构的滚动变得混乱。用户可能无法滚动到ScrollView的...
为了正确处理滑动,你需要设置ListView的滚动条样式为`VISIBLE`,并禁用ScrollView的滚动。然后,通过监听ListView的滑动事件,手动控制ScrollView的滚动。下面是一个示例: ```xml <ScrollView android:layout_...
因为ScrollView会尝试捕获所有的触摸事件,导致ListView无法正确处理滑动,从而丧失其自身的滚动功能。为了解决这个问题,开发者通常需要自定义一个实现嵌套滚动的组件,或者使用现有的第三方库。 在这个...
总之,解决ScrollView中嵌套ListView的滑动冲突问题,关键在于正确地处理触摸事件和选择合适的布局策略。根据实际需求和目标设备的API级别,开发者可以从上述方法中选择合适的方式来实现流畅的用户体验。
当ScrollView和ListView/GridView都尝试处理用户的滑动事件时,可能会导致滚动不顺畅或者无法正常滚动。为了解决这个问题,有以下几种策略: 1. 使用NestedScrollView替代ScrollView。NestedScrollView是Android ...
默认情况下,ScrollView会尝试处理所有的触摸事件,导致ListView无法正确接收并处理滑动事件,从而无法正常滚动。 解决这个问题的关键在于正确处理触摸事件的分发。Android的事件分发机制包括三个主要方法:...
在ScrollView中嵌套ListView会导致性能问题,因为ScrollView会尝试管理其所有子视图的滚动,而ListView已经在处理自己的滚动逻辑。 然后是ViewPager。ViewPager允许用户在多个页面之间水平滑动,常用于实现Tab切换...
可以通过重写ListView的onInterceptTouchEvent和onTouchEvent方法,只处理滑动事件,避免事件传递到ScrollView。 ```java public class CustomListView extends ListView { @Override public boolean ...