scrollview积累的一点小小技巧,记录起来
2014-07-22 09:59
120 查看
慢慢记录,关于scrollview的就丢到这吧!
1.scrollview老是跳到底部,可以用此方法设置到顶部
txtBaseMsg是scrollview内最顶的一个控件,任何一个顶部子View都可以,主要是让他获得焦点,滚动到顶部
2.解决scrollview嵌套listview冲突,把listview设置成scrollview的样式,改写listview的onMeasure方法即可
原文链接:http://www.eyeandroid.com/thread-17137-1-1.html)
1.scrollview老是跳到底部,可以用此方法设置到顶部
txtBaseMsg.setFocusable(true); txtBaseMsg.setFocusableInTouchMode(true); txtBaseMsg.requestFocus();
txtBaseMsg是scrollview内最顶的一个控件,任何一个顶部子View都可以,主要是让他获得焦点,滚动到顶部
2.解决scrollview嵌套listview冲突,把listview设置成scrollview的样式,改写listview的onMeasure方法即可
@Override public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); }3.解决scrollview嵌套ViewPager时两个控件触摸的冲突:自定义Viewpager做为子控件,因为在ViewPager的onTouchEvent中我对onDown进行了操作,进行了操作后就无法将touch事件继续往下传给onClick和其内部控件的任何事件,所以自己做了判断,做了个singleTouch来实现点击的事件,此段代码为转载(
原文链接:http://www.eyeandroid.com/thread-17137-1-1.html)
view sourceprint?01public class ChildViewPager extends ViewPager{ /** 触摸时按下的点 **/ PointF downP = new PointF(); /** 触摸时当前的点 **/ PointF curP = new PointF(); OnSingleTouchListener onSingleTouchListener; public ChildViewPager(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } public ChildViewPager(Context context) { super(context); // TODO Auto-generated constructor stub } @Override public boolean onInterceptTouchEvent(MotionEvent arg0) { // TODO Auto-generated method stub //当拦截触摸事件到达此位置的时候,返回true, //说明将onTouch拦截在此控件,进而执行此控件的onTouchEvent return true; } @Override public boolean onTouchEvent(MotionEvent arg0) { // TODO Auto-generated method stub //每次进行onTouch事件都记录当前的按下的坐标 curP.x = arg0.getX(); curP.y = arg0.getY(); if(arg0.getAction() == MotionEvent.ACTION_DOWN){ //记录按下时候的坐标 //切记不可用 downP = curP ,这样在改变curP的时候,downP也会改变 downP.x = arg0.getX(); downP.y = arg0.getY(); //此句代码是为了通知他的父ViewPager现在进行的是本控件的操作,不要对我的操作进行干扰 getParent().requestDisallowInterceptTouchEvent(true); } if(arg0.getAction() == MotionEvent.ACTION_MOVE){ //此句代码是为了通知他的父ViewPager现在进行的是本控件的操作,不要对我的操作进行干扰 getParent().requestDisallowInterceptTouchEvent(true); } if(arg0.getAction() == MotionEvent.ACTION_UP){ //在up时判断是否按下和松手的坐标为一个点 //如果是一个点,将执行点击事件,这是我自己写的点击事件,而不是onclick if(downP.x==curP.x && downP.y==curP.y){ onSingleTouch(); return true; } } return super.onTouchEvent(arg0); } /** * 单击 */ public void onSingleTouch() { if (onSingleTouchListener!= null) { onSingleTouchListener.onSingleTouch(); } } /** * 创建点击事件接口 * @author wanpg * */ public interface OnSingleTouchListener { public void onSingleTouch(); } public void setOnSingleTouchListener(OnSingleTouchListener onSingleTouchListener) { this.onSingleTouchListener = onSingleTouchListener; } }
相关文章推荐
- 一点感慨, 小小记录
- 记录一个Word操作技巧,很偏门的,鉴于Google很不方便用了,百度起来比较费劲所以记录一下
- 使用webbroswer的一点技巧记录
- 一点小小积累
- 如何让 MSN 与应用系统紧密集成起来?[转贴,记录一下]
- 防毒技巧: 对qq自动传文件病毒逆向后的一点成果
- 知识积累——VC技巧
- DB2编程序小小技巧
- 一点记录
- 记录一点项目心得...
- classloader的一点积累
- 非连接式数据保存时的一点技巧
- web技巧记录
- Enterprise Library 2.0 技巧(3):记录ASP.NET站点中未处理的异常
- 关于CSDN_blog的使用错误记录(不知道为什么CSDN不去改这些错误,难道你们用起来舒服???)
- Enterprise Library 2.0 技巧(3):记录ASP.NET站点中未处理的异常
- 21种技巧可让你的员工活跃起来
- sql的三个主要语句及一点技巧
- 让XP跑起来的自动化技巧
- 关于管理培训的一点心得记录