我正在使用Appcompat V7库中的新工具栏,我正在制作一个带有抽屉菜单和片段的应用程序。
在一些片段中,我不想显示汉堡包图标,而是箭头。。。很好,我是这样做的:
mDrawerToggle.setDrawerIndicatorEnabled(false);
mDrawerToggle.syncState();
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.abc_ic_ab_back_mtrl_am_alpha);
我的问题是:如何或在哪里我需要设置主页按钮lisener或什么我需要听“返回”按钮?我想调用主反压方法,并用汉堡图标设置抽屉菜单图标...
不确定这是否适用于OP,但在许多情况下,这可能是使用AppCompat工具栏实现后退按钮的最简单选项。
跳过所有setHomeButtonEn郊游
、setDisplayHomeAsUpEn郊游
和onOptionsItemSelec
的内容以及相关问题。
相反,初始化工具栏时,只需为其设置1)导航图标和2)导航OnClickListener:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
if (enableBackNavigation) {
toolbar.setNavigationIcon(R.drawable.ic_back);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
}
你可以这样做:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
toolbar = (Toolbar)findViewById(R.id.toolbar);
if (toolbar != null) {
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
setUpNavigationDrawer();
getFragmentManager().addOnBackStackChangedListener(backStackListener); // listen to the backstack of the fragment manager
}
定义OnBackbackChangedListener:
private FragmentManager.OnBackStackChangedListener backStackListener = new FragmentManager.OnBackStackChangedListener() {
@Override
public void onBackStackChanged() {
setNavIcon();
};
}
根据碎片的后退设置图标:
protected void setNavIcon() {
int backStackEntryCount = getFragmentManager().getBackStackEntryCount();
drawerToggle.setDrawerIndicatorEnabled(backStackEntryCount == 0);
}
当抽屉图标被按下时检测:
public boolean onOptionsItemSelected(MenuItem item) {
if (drawerToggle.isDrawerIndicatorEnabled() && drawerToggle.onOptionsItemSelected(item)) {
return true;
}
switch (item.getItemId()) {
case x:
return true;
default:
return false;
}
}
并处理向上按钮:
public boolean onSupportNavigateUp() {
onBackPressed();
return true;
}
这对我有用。祝你好运。
在onCreate()中添加此方法:
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
然后覆盖onOptionItemSelected(),如下所示:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
我可以在工具栏中看到后退按钮,但当我单击时,什么都没有发生。它不会,但当我删除的整个实现时,后退按钮工作正常。我需要在需要时在两者之间切换。提前感谢。
我试图在中间显示我的工具栏标题,为此我使用以下答案中给出的方法:-工具栏中心标题 但是,当我通过以下代码在我的中启用后退按钮时: 工具栏的标题不显示在中间,但向右稍微偏离中心。 如何实现居中标题而不受后退按钮或菜单栏的影响?
我的所有片段都是通过ActionBarActivity(mainActivity)控制的,在mainActivity中实现了一个抽屉布局,所有子片段都是通过抽屉布局的列表项点击来推送的。我面临的问题是,在通过抽屉布局推送片段后,我想将抽屉图标更改为工具栏的后图标,以便用户可以导航到前一个片段并处理Android的回调。R、 id.home位于同一片段内或主活动内。 我使用的代码是: MainAct
在这些Android文档的帮助下。我正在尝试做一个操作栏后退按钮。我得到一个操作栏后退按钮,如下图: 输出: 但我的问题是在看了画廊的图片后,我按下了动作栏后退按钮。 然后它不工作了。但它必须回到上一页。 下面列出了代码。 厨房活动。java: GalleryDetailFragment。java: 如果你知道如何解决这些问题,任何人都可以帮助我。谢谢你。
我不能改变返回按钮的颜色。我用的是工具栏材质设计。在我的应用程序中,我应用了工具栏的黑色背景,但默认情况下,背面设计是黑色的,这就是为什么我只想更改此返回按钮的颜色。请给我解决办法。 非常感谢。
我有标准抽屉菜单,但现在我试图修改它,使用工具栏。 之前我的代码看起来像:MainActivity.java NavigationDrawerFragment.java 现在我修改了代码:MainActivity。Java语言 NavigationDrawerFragment.java 并应显示HomeUp功能: 但未显示后退箭头 我试过打电话 因此,返回箭头出现,但单击它没有效果