简体   繁体   English

将片段放在absoluteLayout中

[英]Bring fragment to front within absoluteLayout

I have list of fragment containing buttons and one fragment, that shows up, after slide gesture is made ( similar to menu navigation drawer ). 我有一个包含按钮的片段列表和一个做出滑动手势后显示的片段(类似于菜单导航抽屉)。 Problem is, that the buttonFragments always stay on top of my menuFragment. 问题是,buttonFragments始终位于我的menuFragment的顶部。

Illustration: 插图:

在此处输入图片说明

I tried to use View.bringToFront() method, but it didnt work. 我尝试使用View.bringToFront()方法,但是没有用。 Am I doing it wrong, or should I do it in different way? 我做错了吗,还是应该以其他方式做呢?

Activity EditKeyboard.java: 活动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);
        }
    }

So what am I doing wrong? 那我在做什么错?

Or should I use different layout (Relative or Frame one?) 还是应该使用其他布局(相对布局还是第一帧?)

I would use relativelayout. 我会使用relativelayout。

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

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

Here because bMenu is placed after button_fragment, it will be on top of button_fragment. 在这里,因为bMenu放在button_fragment之后,所以它将位于button_fragment的顶部。 So button_fragment is inflated first while rendering followed by bMenu putting it on top of it (subject of positioning being such). 因此,button_fragment首先在渲染时膨胀,然后是bMenu将其放在顶部(定位的对象就是这样)。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM