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

时间:2016-08-01 07:11:21

标签: android android-layout

我尝试将保证金更新或动画应用于使用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);

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

1 个答案:

答案 0 :(得分:1)

Android只在准备好LayoutParams时执行布局传递,而在移动视图时不会发生这种情况。如果您想在动画时更改View的大小,则应使用setScale。如果您确实需要View重新运行其布局,可以手动调用layout(left, top, right, bottom)