我在某个项目中需要一个TreeView。所以我简化了AndroidTreeView并遇到了这个问题:
private static void expand(final View view) {
view.measure(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
final int targetHeight = view.getMeasuredHeight();
view.getLayoutParams().height = 0/*1*/;
view.setVisibility(View.VISIBLE);
Animation expansion = new Animation() {
@Override
protected void applyTransformation(float interpolatedTime,
Transformation t) {
view.getLayoutParams().height = interpolatedTime == 1
? LinearLayout.LayoutParams.WRAP_CONTENT
: (int)(targetHeight * interpolatedTime);
view.requestLayout();
}
@Override
public boolean willChangeBounds() { return true; }
};
expansion.setDuration((int)(targetHeight /
view.getContext().getResources().getDisplayMetrics().density));
view.startAnimation(expansion);
}
问题在于:
view.getLayoutParams().height = 0/*1*/;
在原始代码中,height设置为0并使用动画展开。 在我的情况下,如果height设置为0,则不会调用applyTransformation()!所以我最终将它设置为1并且工作正常。 有原因吗? 提前致谢! 说实话,我可能会导致不同的viewgroup图层包装itemview,略有不同。我的代码已经解决here。