在Android ActionBar上设置导航图标

4
所以我正在将ActionBarSherlock和Navigation Drawer添加到一个之前实现了自定义(非常糟糕的编写)“操作栏”的项目中。与使用片段和活动回退栈进行导航不同,一些活动显示和隐藏不同的布局。(也就是说,假设我处于列表模式,然后选择一个按钮进入编辑屏幕。应用程序当前会隐藏列表布局并显示另一个布局。)
所以我已经在所有活动中添加了ActionBar Sherlock和Navigation Drawer。我想能够在按下某些按钮时以编程方式将导航图标从3行切换到箭头。
我无法弄清楚如何做到这一点。有任何想法吗?
谢谢!
4个回答

7
解决这个问题的方法是使用以下方式:
setDrawerIndicatorEnabled(boolean enable)

ActionBarDrawerToggle类内部。


6

之后:

drawer.setDrawerListener(toggle);

请使用以下代码:
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.select);

2

这取决于您对内置操作栏工件的依赖程度。您可以通过填充所选布局,然后调用以下方法来重新绘制当前操作栏:

getSherlockActivity().getSupportActionBar().setDisplayShowTitleEnabled(false);
getSherlockActivity().getSupportActionBar().setDisplayShowHomeEnabled(false);
getSherlockActivity().getSupportActionBar().setDisplayShowCustomEnabled(true);
// Inflate and do whatever you need to your view...
getSherlockActivity().getSupportActionBar().setCustomView(abView);
getSherlockActivity().getSupportActionBar().show();

如果您正在使用DrawerLayout进行导航抽屉,当您想返回到标准模式时,只需调用setDisplayShowCustomEnabled(false)即可(随意重新启用showHome和showTitle)。


谢谢您的建议,那个方法可以行得通,但不幸的是我认为这不是最实际的解决方案。不过还是非常感谢您。 - Synergy807

1
据我所知,只能通过主题来自定义返回按钮。此外,在同一活动中将抽屉图标替换为返回图标是没有意义的,因为用户仍然可以通过将最左边的边缘向右滑动来访问导航抽屉。这毫无意义。
如果您绝对需要返回图标,则最明智的做法是将该屏幕作为新活动,因为您确实正在向堆栈添加另一个“级别”,这就是返回图标所代表的。

我同意这没有道理,但是我必须用我已经得到的东西去工作... =/我有点想模拟添加堆栈的另一个层次。就短期来说,我觉得交换图像并覆盖android.R.id.home菜单项按下会更容易一些。这样我就可以发布这个版本了。但是,也许你是对的,也许我应该把它做成另一个活动。 - Synergy807
我并不完全同意这种做法没有意义,但无论如何,我的观点都没有多少价值。事实是,谷歌在Google音乐应用程序中使用了这种方法。当您从“主页”点击专辑时,会进入一个活动,其操作栏显示“返回”符号(并且它确实将您带回),但是如果您拖动,则仍然有一个抽屉。以下是上述应用程序的截图,请注意操作栏,注意我从左侧拖动时抽屉的出现:https://www.dropbox.com/sc/qs00ozm18n6v3ep/a3JuhL9LPu - Martin Marconcini

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接