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