有没有办法为Android AppCompat导航抽屉设置两个“向上”按钮(每侧一个)?
我使用AppCompat导航抽屉构建了一个Android应用程序,一个在左边,一个在右边。我的问题是,如果是这样,人们会如何在标题栏上放置一个向上按钮,这样每个抽屉在标题栏的每一侧都有自己的按钮。我有以下代码:有没有办法为Android AppCompat导航抽屉设置两个“向上”按钮(每侧一个)?,android,android-layout,user-interface,android-drawable,android-appcompat,Android,Android Layout,User Interface,Android Drawable,Android Appcompat,我使用AppCompat导航抽屉构建了一个Android应用程序,一个在左边,一个在右边。我的问题是,如果是这样,人们会如何在标题栏上放置一个向上按钮,这样每个抽屉在标题栏的每一侧都有自己的按钮。我有以下代码: new DrawerToggle(this, getLeftDrawerLayout(), R.drawable.imgur_drawer_list_button_shape_left, R.string.open_drawer, R.string.close_drawer, getLe
new DrawerToggle(this, getLeftDrawerLayout(), R.drawable.imgur_drawer_list_button_shape_left, R.string.open_drawer, R.string.close_drawer, getLeftDrawerListView(), LeftDrawerDrawerArrayAdapter);
new DrawerToggle(this, getRightDrawerLayout(), R.drawable.imgur_drawer_list_button_shape_right, R.string.open_drawer, R.string.close_drawer, getRightDrawerListView(), RightDrawerDrawerArrayAdapter);
其中DrawerToggle扩展了android.support.v4.app.ActionBarDrawerToggle和R.drawable.imgur\u drawer\u list\u button\u shape\u左侧以及R.drawable.imgur\u drawer\u list\u button\u shape\u右侧根据需要位于可绘制资源目录中
此外,在activity onCreate方法中处理以下代码:
不幸的是,这只会产生一个只有左侧抽屉向上按钮图标的应用程序,它会做出反应,即滑入左右两个抽屉
请任何人提供帮助,并提供一种方法,使按钮在标题栏的两侧,每个按钮对应于其各自的抽屉
衷心感谢您
Piotr.设计指南中从未规定两侧都有开关。有一种很简单的方法可以做到这一点,这真的是一团糟,但试一下吧 这包括覆盖溢出菜单项的功能,这意味着您将永远无法让它按预期工作 添加具有showAsAction=从不的菜单项,以确保始终具有溢出菜单项。 随心所欲地设计它 获取的视图引用如下所示: 将OnClickListener添加到视图引用匿名声明或字段。琐碎的 在onClick中切换抽屉 使用onDrawerSlideView drawerView、float slideOffset在ActionBarDrawerToggle中设置动画时设置可绘制对象的动画。基本上,它是离屏的,可拖动一半,通过滑动偏移的某些因素前后移动
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
public static View getOverflowButton(Activity a){
View homeButton = a.findViewById(android.R.id.home);
ViewParent parentOfHome = homeButton.getParent().getParent(); //ActionBarView is parent of home ImageView, see layout file in sources
try{
parentOfHome = parentOfHome.getParent();//get to ActionBarView;
Class absActionBarView = parentOfHome.getClass().getSuperclass(); //ActionBarView -> AbsActionBarView class
Field menuPresenter = absActionBarView.getDeclaredField("mActionMenuPresenter"); // ActionMenuPresenter is the object that calls openOverflowMenu() closeOverflowMenu()
menuPresenter.setAccessible(true); // and contains the overflow button view.
Object menuPresenterView = menuPresenter.get(parentOfHome);
Field overflowField = menuPresenterView.getClass().getDeclaredField("mOverflowButton");
overflowField.setAccessible(true);
View overFlowButtonView = (View) overflowField.get(menuPresenterView);
return overFlowButtonView;
}
catch(NoSuchFieldException e){
Log.e("getOverflowButton()", e.getMessage());
} catch (IllegalArgumentException e) {
Log.e("getOverflowButton()", e.getMessage());
} catch (IllegalAccessException e) {
Log.e("getOverflowButton()", e.getMessage());
}
return null;
}