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

Ric*_*ard 16 android android-layout

我正在尝试将边距更新或动画应用于使用a拖动父视图的子视图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);
Run Code Online (Sandbox Code Playgroud)

查看此演示屏录制:http: //imgur.com/a/dDiGt

Nav*_*ake 1

Android 仅LayoutParams在执行布局传递时准备就绪,而在移动视图时不会发生布局传递。View如果你想改变动画的大小,你应该使用setScale它。如果您确实需要视图重新运行其布局,您可以手动调用layout(left, top, right, bottom).