zoukankan      html  css  js  c++  java
  • 关于ScrollView和listview的冲突关于的滑动和宽度

    listview和ScrollView嵌套有两个冲突,关于listview显示不全的问题和listview和scrollview的滑动冲突

    自定义listview

    package com.exmple.listscrow;
    
    
    import android.content.Context;
    import android.util.AttributeSet;
    import android.view.MotionEvent;
    import android.widget.ListView;
    
    public class MyListView extends ListView {
    
    	int mLastMotionY;
    	boolean bottomFlag;
    
    	public MyListView(Context context, AttributeSet attrs) {
    		super(context, attrs);
    		// TODO Auto-generated constructor stub
    	}
    //解决宽度的冲突
    	@Override
    	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { // 对height重新赋值
    																			// heightMeasureSpec
    																			// =
    		heightMeasureSpec = MeasureSpec.makeMeasureSpec(500/*
    															 * Integer.MAX_VALUE
    															 * >> 2
    															 */,
    				MeasureSpec.AT_MOST);
    		super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    	}
    解决滑动的冲突

    @Override public boolean dispatchTouchEvent(MotionEvent ev) { getParent().requestDisallowInterceptTouchEvent(true); return super.dispatchTouchEvent(ev); }

    }

      在主方法里贴以下代码,以下这个代码可以实现以下效果,当listview滑到底部的时候,

    ScrollView会和listview实现连动
    package com.exmple.listscrow;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import com.exaple.vo.Super;
    
    import android.R.fraction;
    import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;
    import android.view.MotionEvent;
    import android.view.View;
    import android.view.View.OnTouchListener;
    import android.widget.AbsListView;
    import android.widget.AbsListView.OnScrollListener;
    import android.widget.ListView;
    import android.widget.ScrollView;
    import android.widget.Toast;
    
    public class MainActivity extends Activity implements OnScrollListener {
    	String[] name = new String[] { "陈克", "陈多多", "张小杰", "张杰", "宋静萌", "郑芳蓓",
    			"杨洋", "谢娜", "刘忠杰", "天下", "走路去纽约", "一切都值得", "最美的太阳", "我们都一样",
    			"娜样纯洁的爱恋", "一切都值得", "最美的太阳", "我们都一样", "娜样纯洁的爱恋" };
    	String[] price = new String[] { "1", "1", "1", "1", "1", "1", "1", "1",
    			"1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1" };
    	private List<Super> list;
    	boolean island;
    	private MyListView listview;
    	private ScrollView sc;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		listview = (MyListView) findViewById(R.id.listview);
    		sc = (ScrollView) findViewById(R.id.sc);
    		getData();
    		Apap ap = new Apap(list, MainActivity.this);
    		listview.setAdapter(ap);
    		listview.setOnScrollListener(this);
    		//不用自定义listview时用
    		/*listview.setOnTouchListener(new OnTouchListener() {
    
    			@Override
    			public boolean onTouch(View v, MotionEvent event) {
    				if (event.getAction() == 2) {
    					sc.requestDisallowInterceptTouchEvent(true);
    				} else {
    					sc.requestDisallowInterceptTouchEvent(false);
    
    				}
    				return false;
    			}
    		});
    */
    		// listview.getParent().requestDisallowInterceptTouchEvent(false);
    	}
    
    	public List<Super> getData() {
    		list = new ArrayList<Super>();
    
    		for (int i = 0; i < name.length; i++) {
    			Super super1 = new Super();
    			super1.setName(name[i]);
    
    			list.add(super1);
    
    		}
    		return list;
    	}
    
    	//
    	@Override
    	public void onScrollStateChanged(AbsListView view, int scrollState) {
    		if (island && scrollState == OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) {
    			Toast.makeText(MainActivity.this, "kaisjia", 0).show();
    			sc.requestDisallowInterceptTouchEvent(false);
    
    		}
    
    	}
    
    	@Override
    	public void onScroll(AbsListView view, int firstVisibleItem,
    			int visibleItemCount, int totalItemCount) {
    
    		island = (firstVisibleItem + visibleItemCount) == totalItemCount;
    
    	}
    }
    

      

  • 相关阅读:
    一个浏览器循环刷新网页的例子
    Ajax和JSON基础
    HTML-第三章构建模块小结
    HTML-元素属性
    入前端坑的第一天
    JZOJ 【2021.11.10NOIP提高组联考】
    LG P2633 Count on a tree
    JZOJ 7339.改试卷
    [CEOI2017] Building Bridges
    拉格朗日插值法
  • 原文地址:https://www.cnblogs.com/jsonfan/p/5390983.html
Copyright © 2011-2022 走看看