在 absoluteLayout 中将片段置于最前面

Bring fragment to front within absoluteLayout

我有包含按钮的片段列表和一个片段,在做出滑动手势后显示(类似于菜单导航抽屉)。问题是,buttonFragments 始终位于我的 menuFragment 之上。

插图:

我尝试使用 View.bringToFront() 方法,但没有用。我做错了吗,还是应该换个方式做?

Activity EditKeyboard.java:

public class EditKeyboard extends AppCompatActivity{

        ArrayList<Fragment> keyFragments; // buttons
        Fragment bMenu; // menu

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_edit_keyboard);

            createButtons();
            createBMenu();
        }


        public void createBMenu(){
            bMenu = ButtonMenuFragment.newInstance("a", "a");
            getFragmentManager().beginTransaction().add(R.id.edit_keyboard_layout,
                    bMenu, "bMenu").commit();
            View v = bMenu.getView();
            v.bringToFront(); // TODO bring menu to top
            ((View) v.getParent()).requestLayout();
            ((View) v.getParent()).invalidate();
            getFragmentManager().popBackStackImmediate("TAG", FragmentManager.POP_BACK_STACK_INCLUSIVE);
        }
    }

那我做错了什么?

或者我应该使用不同的布局(相对布局还是框架布局?)

我会使用相对布局。

<RelativeLayout>
     ...
     <fragment 
         android:name= "packagename.button_fragment"
         ...width, height, id, postion... />

     <fragment 
         android:name= "packagename.bMenu"
         ...width, height, id, postion... />

这里因为bMenu放在button_fragment之后,所以会在button_fragment之上。所以 button_fragment 在渲染时首先膨胀,然后 bMenu 将它放在它上面(定位的主题就是这样)。

我已经通过将每个按钮包装到 FrameLayout 中解决了这个问题。