我尝试将保证金更新或动画应用于使用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
答案 0 :(得分:1)
Android只在准备好LayoutParams
时执行布局传递,而在移动视图时不会发生这种情况。如果您想在动画时更改View
的大小,则应使用setScale
。如果您确实需要View重新运行其布局,可以手动调用layout(left, top, right, bottom)
。