1.如果listview是在scrollview下 ,那么 Listview一定无法滚动。有两种解决方法 第一种计算listview的高度,第二种通过事件的传递 从而解决listview无法滚动的问题 。 我个人也更偏向第二种方法,下面我就详细介绍下第二种方法
2.创建一个类继承scrollview(具体代码如下)
public class ScrollViewC extends ScrollView
{
public ScrollViewC(Context context, AttributeSet attrs)
{
super(context, attrs);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev)
{
if (ev.getAction() == MotionEvent.ACTION_DOWN)
{
return false;
}
return false;//重写此方法,默认是返回true。true代表此事件已被消费,false事件继续向下传递
}
@Override
public boolean onTouchEvent(MotionEvent ev)
{
return super.onTouchEvent(ev);
}
}
3.创建一个类继承自listview
public class ListviewC extends ListView
{
public ListviewC(Context context, AttributeSet attrs)
{
super(context, attrs);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev)
{
if (ev.getAction() == MotionEvent.ACTION_DOWN)
{
return true;//消费自此事件
}
return super.onInterceptTouchEvent(ev);
}
@Override
public boolean onTouchEvent(MotionEvent ev)
{
return super.onTouchEvent(ev);
}
}
4.xml文件
<com.example.deme3.ScrollViewC xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="第66666个"
android:textSize="26dp" />
<com.example.deme3.ListviewC
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="300dp" >//指定Listview高度
</com.example.deme3.ListviewC>
</LinearLayout>
</com.example.deme3.ScrollViewC>