Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ViewDragHelper-拖动时忽略子布局更改_Android_Android Layout - Fatal编程技术网

Android ViewDragHelper-拖动时忽略子布局更改

Android ViewDragHelper-拖动时忽略子布局更改,android,android-layout,Android,Android Layout,我正在尝试将边距更新或动画应用到使用ViewDragHelper拖动父视图的子视图 但是,在拖动视图时,更新的布局特性无效,并且不会渲染。拖动时,从添加和删除视图到布局动画或布局参数更新的所有内容都将被忽略: 为了说明这个问题,我创建了一个延迟runnable,它在3秒后更新视图(绿色视图)的高度: spacer.postDelayed(new Runnable() { @Override public void run() { Log.d(TAG,"se

我正在尝试将边距更新或动画应用到使用
ViewDragHelper
拖动父视图的子视图

但是,在拖动视图时,更新的布局特性无效,并且不会渲染。拖动时,从添加和删除视图到布局动画或布局参数更新的所有内容都将被忽略:

为了说明这个问题,我创建了一个延迟runnable,它在3秒后更新视图(绿色视图)的高度:

spacer.postDelayed(new Runnable() {
     @Override
     public void run() {
          Log.d(TAG,"set layout params!!!!");
          ViewGroup.LayoutParams spacerParams = spacer.getLayoutParams();
          spacerParams.height = (int) (200+(Math.random()*200));
          spacer.setLayoutParams(spacerParams);
     }
},3000);
检查此演示屏幕录制:

Android仅在执行布局传递时准备好
LayoutParams
,而视图移动时不会发生这种情况。如果要在设置
视图的动画时更改其大小,则应改用
setScale
。如果您真的需要视图重新运行其布局,您可以手动调用
布局(左、上、右、下)

据我所知,ViewDragHelper只会偏移被拖动视图的转换值,实际上不会做出导致重新布局的更改。“使用
ViewDragHelper
拖动视图”是一个非常模糊的描述。那是定制组件吗?你实际上是如何使用它的?@user1643723