我有一个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之前工作。
答案 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);
}
}