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

16

我试图对使用ViewDragHelper拖动的父视图的子视图应用边距更新或动画。

然而,在拖动视图时,更新的布局属性没有效果并且不会呈现。从添加和删除视图到布局动画或布局参数更新的所有内容都在拖动时被忽略:

为说明此问题,我创建了一个延迟的可运行项,它将在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
据我所知,ViewDragHelper仅偏移拖动视图的平移值,它并不会实际进行更改以导致重新布局。 - Karakuri
“使用ViewDragHelper拖动视图”是一个非常模糊的描述。那是一个自定义组件吗?你如何实际使用它? - user1643723
@user1643723 https://developer.android.com/reference/android/support/v4/widget/ViewDragHelper.html - Richard
1个回答

1

当Android进行布局时,只有在没有移动View时才会准备好LayoutParams。如果您想在View动画时更改其大小,则应改用setScale。如果您真的需要让View重新运行其布局,则可以手动调用layout(left,top,right,bottom)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接