Android 当添加片段时,偏移量为的FrameLayout会重新定位自身吗?

Android 当添加片段时,偏移量为的FrameLayout会重新定位自身吗?,android,android-layout,android-fragments,android-view,android-fragmentactivity,Android,Android Layout,Android Fragments,Android View,Android Fragmentactivity,我有一个FrameLayout(在RelativeLayout中)通过FragmentTransaction类向/从中添加/删除Fragments。我的FrameLayout最初与其父级左对齐,有时通过FrameLayout.offsetLeftAndRight(int offset)方法进行水平偏移 我发现,当我的FrameLayout偏移时,我提交一个片段事务以向其中添加fragment(即FragmentTransaction.add(R.id.myFrameLayout,myNewFra

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

我发现,当我的
FrameLayout
偏移时,我提交一个片段事务以向其中添加
fragment
(即
FragmentTransaction.add(R.id.myFrameLayout,myNewFragment.commit()
),我的
FrameLayout
跳回其原始位置,忽略其偏移量

有人知道为什么会发生这种情况,以及当我向其添加
片段时如何避免我的
FrameLayout
重新定位自身吗

注意:我使用的是
offsetLeftAndRight(int-offset)
方法,而不是
setTranslationX(float-translationX)
或其他方法,因为我需要在工作前所做的工作


通过保持对偏移位置的跟踪并覆盖我的视图的
onLayout(boolean-changed,int-left,int-top,int-right,int-bottom)
方法来解决此问题,以便在调用此方法时适当偏移我的视图,如下所示:

@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);
  }
}