scrollview嵌套listview的解决方法(一)

来源:互联网 发布:top的域名注册 编辑:程序博客网 时间:2024/06/16 23:10

在写这个博客之前,就认识到scrollview嵌套listview的冲突问题,只是自己没有遇到过,且在百度上有各种解决的方法,但是很多没有解决到我的问题,于是乎在项目中自己尝试了解决的方法,分享给大家,话不多说,直接上代码

用到的东西,自定义listview、scrollview布局参数的添加

1.自定义listview

package fho.nak.jeekup.okhtt;import android.content.Context;import android.util.AttributeSet;import android.widget.ListView;/** * @创建者 Jimven * @创建时间 2017/8/4/0004  17:45 */public class MyListView extends ListView {    public MyListView(Context context, AttributeSet attrs, int defStyle) {        super(context, attrs, defStyle);    }    public MyListView(Context context, AttributeSet attrs) {        super(context, attrs);    }    public MyListView(Context context) {        super(context);    }    @Override    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        //设置为Integer.MAX_VALUE>>2 listview全部展开        int measureSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE>>2, MeasureSpec.AT_MOST);        //设置为900是设置scrollview的滑动高度只能有900实现可以滑动的效果        int measureSpec1 = MeasureSpec.makeMeasureSpec(900, MeasureSpec.AT_MOST);        super.onMeasure(widthMeasureSpec, measureSpec1);    }}


2.布局设置,在scrollview中添加以下两个参数

android:focusableInTouchMode="true"android:focusable="true"

布局文件

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"              android:layout_width="match_parent"              android:orientation="vertical"              android:layout_height="match_parent">    <ScrollView        android:id="@+id/sllv_my"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:focusable="true"        android:focusableInTouchMode="true">        <fho.nak.jeekup.okhtt.MyListView            android:id="@+id/lv_my"            android:layout_width="match_parent"            android:layout_height="20dp">        </fho.nak.jeekup.okhtt.MyListView>    </ScrollView></LinearLayout>


3.在代码中

package fho.nak.jeekup.okhtt;import android.app.Activity;import android.os.Bundle;import android.view.MotionEvent;import android.view.View;import android.widget.AdapterView;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.ScrollView;import android.widget.Toast;import java.util.ArrayList;import java.util.List;/** * @创建者 Jimven * @创建时间 2017/8/5/0005  1:38 */public class MyActivity extends Activity {    //定义控件    private ListView lv;    private ScrollView scrollView;    //定义一个集合保存数据    private List<String> list = new ArrayList<String>();    //定义一个adapter    private ArrayAdapter mArrayAdapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_my);        initView();        initData();        initEvent();    }    //初始化控件    private void initView() {        lv = (ListView) findViewById(R.id.lv_my);        scrollView = (ScrollView) findViewById(R.id.sllv_my);    }    //初始化数据    private void initData() {        for (int i = 0; i < 50; i++) {            list.add("模拟数据" + i);        }        mArrayAdapter = new ArrayAdapter(getApplicationContext(), android.R.layout.simple_list_item_1, list);        lv.setAdapter(mArrayAdapter);    }    //初始化事件    private void initEvent() {        scrollView.smoothScrollTo(0, 0);        lv.setOnTouchListener(new View.OnTouchListener() {            @Override            public boolean onTouch(View v, MotionEvent event) {                if (event.getAction() == MotionEvent.ACTION_UP) {                    scrollView.requestDisallowInterceptTouchEvent(false);                } else {                    scrollView.requestDisallowInterceptTouchEvent(true);                }                return false;            }        });        //listview条目点击事件        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {                Toast.makeText(MyActivity.this,"你点击了" + list.get(position),Toast.LENGTH_SHORT).show();            }        });    }}


希望以上分享能解决大家的问题,欢迎大家交流,探讨

阅读全文
1 0
原创粉丝点击