在 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 中解决了这个问题。
我有包含按钮的片段列表和一个片段,在做出滑动手势后显示(类似于菜单导航抽屉)。问题是,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 中解决了这个问题。