关于ViewDragHelper动态addview的问题
来源:互联网 发布:爱淘宝买东西如何返利 编辑:程序博客网 时间:2024/05/18 00:34
使用ViewDragHelper自定义的Layout实现拖拽功能确实很方便,怎么使用就不写了,记录一下坑,关于ViewDragHelper使用addView来动态添加View的时候,当第一个View 拖动之后,再添加一个View时,第一个View 又回到了起点位置,跟踪addView发现会调用requestLayout();
invalidate(true);
两个方法,知道了问题 就好解决了
首先先创建一个Map来存储已经添加的View的位置
private Map<View, DragLayoutParams> paramsMap = new HashMap<>();
第二在onViewReleased回调中保存位置
@Override public void onViewReleased(View releasedChild, float xvel, float yvel) { super.onViewReleased(releasedChild, xvel, yvel); DragLayoutParams params = new DragLayoutParams(); params.mLeft = releasedChild.getLeft(); params.mTop = releasedChild.getTop(); params.mRight = releasedChild.getRight(); params.mBottom = releasedChild.getBottom(); paramsMap.put(releasedChild, params); }
第三重写onLayout方法按照存储的位置来layout子View
@Override protected void onLayout(boolean changed, int l, int t, int r, int b) { final int count = getChildCount(); for (int i = 0; i < count; i++) { View child = getChildAt(i); if (child.getVisibility() != GONE) { DragLayoutParams params = paramsMap.get(child); if (params != null) { child.layout(params.mLeft, params.mTop, params.mRight, params.mBottom); } else { child.layout(0, 0, child.getMeasuredWidth(), child.getMeasuredHeight()); } } } }
这样再次发生layout的时候 也不会回到原点了
阅读全文
0 0
- 关于ViewDragHelper动态addview的问题
- 关于ViewDragHelper通过addView动态修改UI的坑
- 关于WindowManager.addview()的问题
- 关于WindowManager.addview()的问题
- 关于Android的addview
- 关于WindowManager.addView() 不显示添加的View的问题!
- 关于循环addView子布局监听的问题
- 【遇到的问题】动态addview之后怎么识别每个单独的view进行对应的操作
- android关于ViewDragHelper的使用
- 关于addview的几点疑问
- addview的view何时显示的问题
- WindowManager addView不上去的问题?
- 关于ViewDragHelper
- android 动态addview注意
- 动态添加布局时,addView易引发的错误
- 关于Android的LinearLayout的addView方法解析
- addView的基本用法
- 关于动态代理的问题
- HIVE STORED&Row format(四)
- 找工作的辛苦历程-互联网篇
- 使用jquery在页面上加sidebox
- java ++i, i++,--i ,i--区别
- logstic回归损失函数及梯度下降公式推导
- 关于ViewDragHelper动态addview的问题
- Mac:TexStudio environ not found
- 百度富文本图片上传路径配置(非项目路径)
- soket相关
- QT下添加字库支持
- [ BSGS ] BZOJ3239
- Caffe入门学习(7)将自己的图像数据转成lmdb格式
- JS实现用户上传图片并预览(图片fakepath问题)
- js(三)---函数的作用域与闭包