布局文件
当ListView嵌套在ScrollView中时,会发生冲突,导致ListView控件的拉动效果消失‘
解决办法:
重写ListView的onTouchEvent(),并在返回前调用getParent().requestDisallowInterceptTouchEvent(true) 表示。不允许父层拦截或干扰本控件
Demo
1 package com.xqx.fight;
2
3 import android.app.Activity;
4 import android.os.Bundle;
5 import android.view.Menu;
6 import android.view.MotionEvent;
7 import android.view.View;
8 import android.view.View.OnTouchListener;
9 import android.widget.ArrayAdapter;
10 import android.widget.ListView;
11
12 public class MainActivity extends Activity {
13
14 private ListView listView;
15 private ArrayAdapter<String > adapter;
16
17 @Override
18 protected void onCreate(Bundle savedInstanceState) {
19 super.onCreate(savedInstanceState);
20 setContentView(R.layout.activity_main);
21
22 listView = (ListView) findViewById(R.id.listView);
23 adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
24 for(int i=0;i<20;i++)
25 {
26 adapter.add("列表项:"+i);
27 }
28 listView.setAdapter(adapter);
29
30 listView.setOnTouchListener(new OnTouchListener() {
31
32 @Override
33 public boolean onTouch(View v, MotionEvent event) {
34 //getParent().requestDisallowInterceptTouchEvent(true) 不允许父层拦截或干扰本控件
35 listView.getParent().requestDisallowInterceptTouchEvent(true);
36 return false;
37 }
38 });
39 }
40
41 }
布局文件
1 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
2 xmlns:tools="http://schemas.android.com/tools"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent"
5
6 >
7
8
9 <LinearLayout
10 android:layout_width="match_parent"
11 android:layout_height="match_parent"
12 android:orientation="vertical"
13 >
14
15 <TextView android:layout_width="match_parent"
16 android:background="#5000"
17 android:layout_height="100dp"
18 android:text="上面部分"/>
19
20 <ListView
21 android:layout_width="match_parent"
22 android:layout_height="250dp"
23 android:id="@+id/listView"
24 >
25 </ListView>
26
27 <TextView android:layout_width="match_parent"
28 android:layout_height="100dp"
29 android:background="#5000"
30 android:text="底部部分"/>
31
32
33 </LinearLayout>
34
35
36
37 </ScrollView>
效果图: