当片段添加到它时,偏移的FrameLayout会重新定位吗?

时间:2012-07-03 18:39:17

标签: android android-layout android-fragments android-view android-fragmentactivity

我有一个FrameLayout(在RelativeLayout内),我可以通过Fragments类添加/删除FragmentTransaction。我的FrameLayout最初与其父级对齐,有时通过FrameLayout.offsetLeftAndRight(int offset)方法水平偏移。

我发现当我的FrameLayout被抵消并且我提交片段事务以向其添加Fragment(即FragmentTransaction.add(R.id.myFrameLayout, myNewFragment).commit())时,我的FrameLayout会跳回来到原来的位置,忽略它的偏移。

任何人都知道为什么会发生这种情况以及如何在向FrameLayout添加Fragment时避免我offsetLeftAndRight(int offset)重新定位?

  

注意:我使用的是setTranslationX(float translationX)方法,而不是{{1}}或其他方法,因为我需要我在Honeycomb之前工作。

1 个答案:

答案 0 :(得分:0)

解决方法是保持跟踪偏移位置并覆盖我的View的onLayout(boolean changed, int left, int top, int right, int bottom)方法,以便在调用此方法时适当地偏移我的View,如下所示:

@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom)
{
  super.onLayout(changed, left, top, right, bottom);

  if (changed)
  {
    offsetLeftAndRight(myHorizontalOffset);
    offsetTopAndBottom(myVerticalOffset);
  }
}