android解决NestedScrollView和ListView冲突问题

大家在做开发的时候,很多都需要用到滑动的scrollview,但是会出现卡顿和滑动的事件冲突问题

注意在app下面的builder文件中添加依赖,不然无法使用控件

compile 'com.android.support.constraint:constraint-layout:1.0.2'

本博客实现一个常见的手机效果,图片加listview显示,效果图 如下所示:

android解决NestedScrollView和ListView冲突问题_第1张图片android解决NestedScrollView和ListView冲突问题_第2张图片android解决NestedScrollView和ListView冲突问题_第3张图片

(1)新建item ,用于自定义的listview效果




    

    


    


(2)在activity_main,写我们的布局效果,含listivw和图片




    

        

        



        

        

        
    


(3)如果你只是在MainActivity代码里,简单的加载布局和配置适配器,那么会导致listview显示不全

import android.content.Context;
        import android.support.v7.app.AppCompatActivity;
        import android.os.Bundle;
        import android.support.v7.widget.AppCompatTextView;
        import android.view.LayoutInflater;
        import android.view.View;
        import android.view.ViewGroup;
        import android.widget.BaseAdapter;
        import android.widget.ListAdapter;
        import android.widget.ListView;
        import android.widget.TextView;

/**
 问题描述:
 1)  在android.support.v4.widget.NestedScrollView中直接嵌套ListView时出现的情况:listview显示不全只有一行或者两行。
 2) 如果listview的item中有根据id选择选项会导致选择错乱,如果listview中包含有switch控件,
 用来对该item是否可用进行判断,但是现在冲突导致的listview中位置错乱。
 2.解决方法:   计算出每一个item的高度,此方法用在listview.setAdapter()后。
 */

public class MainActivity extends AppCompatActivity {
    //参考网址:https://www.cnblogs.com/yuzhongzheng/p/5228401.html
    private MyAdapter adapter;
    private int totalHeight = 0;  //定义总高度


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ListView listview = (ListView) findViewById(R.id.lisview);
        adapter = new MyAdapter(this);
        if (adapter==null){
            return;
        }
        //根据listAdapter.getCount()获取当前拥有多少个item项,
        // 然后进行遍历对每一个item获取高度再相加最终获得总的高度。
        for (int i=0;i

 

你可能感兴趣的:(android,学习)