我正在使用Android Studio模板中的导航抽屉。我想用我的一些碎片中的UP按钮(箭头)代替“汉堡”按钮。我使用AppCompatActivity。
我使用此代码显示UP按钮箭头:
public void UseUpButton(boolean value) {
ActionBar actionBar = getSupportActionBar();
if (value) {
actionBar.setDisplayHomeAsUpEnabled(false);
toggle.setDrawerIndicatorEnabled(false);
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setDisplayShowHomeEnabled(true);
} else {
toggle.setDrawerIndicatorEnabled(true);
}
}
但是我抓不到点击这个按钮。我尝试了一些方法:
public boolean onOptionsItemSelected(MenuItem item) {
Log.d("WTF", "menu");
switch (item.getItemId())
{
case android.R.id.home:
getFragmentManager().popBackStack();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
我添加了getSupportActionBar()。setHomeButtonEnabled(真) 到我的活动::onCreate,但当我按下向上按钮时未调用选项项Selected,当我按下菜单项时工作正常。
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open,
R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();
toggle.setToolbarNavigationClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) {
}
});
但这种方法也不会在按下Up按钮时调用。
那么,我怎样才能赶上Up按钮按下事件呢?
对于使汉堡按钮打开抽屉的默认行为,您可以使用以下代码
Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle mActionBarDrawerToggle = new ActionBarDrawerToggle(
this, drawer, mToolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(mActionBarDrawerToggle);
mActionBarDrawerToggle.syncState();
然后,要覆盖任何子活动中的默认行为,请执行以下操作
getSupportActionBar().setDisplayHomeAsUpEnabled(true); // shows the up navigation button instead of the hamburger
mToolbar.setNavigationOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
finish(); //end current activity
}
});
当ActionBarDrawerTokgle将工具栏作为输入时,它会在工具栏上设置自己的NavigationOnClickListener。我们可以覆盖它以在单击向上按钮时调用我们的代码。
我在您的方法中添加了几行,以便它实现后退按钮:
public void useUpButton(boolean value) {
ActionBar actionBar = getSupportActionBar();
if (value) {
actionBar.setDisplayHomeAsUpEnabled(false);
toggle.setDrawerIndicatorEnabled(false);
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setDisplayShowHomeEnabled(true);
toggle.setToolbarNavigationClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
} else {
toggle.setDrawerIndicatorEnabled(true);
toggle.setToolbarNavigationClickListener(null);
}
}
几天前我在某处发现了这个。。。
在我的代码中,我初始化ActionBarDrawerToggle。它有一些构造函数,但我对此感兴趣:
public ActionBarDrawerToggle(Activity activity, DrawerLayout drawerLayout,
@StringRes int openDrawerContentDescRes,
@StringRes int closeDrawerContentDescRes) {
this(activity, null, drawerLayout, null, openDrawerContentDescRes,
closeDrawerContentDescRes);
}
public ActionBarDrawerToggle(Activity activity, DrawerLayout drawerLayout,
Toolbar toolbar, @StringRes int openDrawerContentDescRes,
@StringRes int closeDrawerContentDescRes) {
this(activity, toolbar, drawerLayout, null, openDrawerContentDescRes,
closeDrawerContentDescRes);
}
看看:第二个构造函数有工具栏
参数。
如果要处理向上按钮事件,请不要使用第二个构造函数,而使用第一个构造函数。
示例:
toggle = new ActionBarDrawerToggle(
this,
drawer,
R.string.navigation_drawer_open,
R.string.navigation_drawer_close);
getSupportActionBar().setHomeButtonEnabled(true);
设置HomeButtonEnabled(主页按钮启用)很重要,没有它,您将看不到Hamburger(汉堡)或Up(向上)按钮。
我正在开发一个android项目,我正在尝试使用来自http://developer.android.com/training/implementing-navigation/nav-drawer.html.的示例集成新的导航抽屉 它主要工作除了一件事,动作栏向上按钮不显示菜单,但如果我用手指从边缘滑动主活动屏幕,菜单就会出现,所以我知道实际菜单没有问题,它只是动作栏按钮。 下面是代码 感谢您提供
我试图遵循谷歌最新的良好实践,用导航组件实现单个活动应用程序。 然而,在阅读了整个导航留档后,我仍然认为有很多情况下,他们没有解决。 例如,我应该如何实现以下情况: 应用程序在闪屏中启动。然后在加载后进入新闻片段。 注意:闪屏应该从后台弹出,因为它不应该再出现了。 然而,部分中的一些片段可以导航到一个新区域,该区域应该有一个后退按钮(而不是抽屉)。
有人能告诉我如何创建活动到这个主要活动,导航抽屉将看到在所有他们?我需要使用这个特定的MainActivity代码。我不需要使用碎片,只要3个简单的活动将添加到这个抽屉。 NavDrawer布局:
我开始创建一个应用程序,它使用一个活动(导航抽屉)和许多片段。但我无法使用工具栏上的“后退”按钮从片段中导航回来。硬件后退按钮工作正常。我知道我需要覆盖选项ItemSelected,捕捉android。R、 id.home,检查后堆栈中是否有内容,然后弹出它。在更改片段后,“burger”按钮变为“back arrow”,但当我单击它时,选项ItemSelected将打开NavigationDra
我正试图把导航抽屉放在动作栏上,当它像这个应用程序一样向右滑动时:[已删除] 这是我的主要活动布局: 关于stackoverflow的其他一些问题与此类似,但建议所有答案都使用滑动菜单库。但这个应用程序他们仍然使用Android。支持v4.widget。抽屉式布局,他们成功了。不要问我怎么知道他们使用标准的导航抽屉,但我肯定。 非常感谢你的帮助。 这是最终的解决方案:多亏了@Peter Cai,这
在我的应用程序中,我使用动作栏和导航抽屉。操作栏中有一个按钮用于打开和关闭导航抽屉。我想把它的颜色改成红色。我该怎么做?