2013-07-17 91 views
4

因此,我正在将ActionBarSherlock和导航抽屉添加到以前实现自定义(写得很差)的“操作栏”的项目中。一些活动不是使用片段和导航活动的后台堆栈,而是显示和隐藏不同的布局。 (也就是说,假设我处于列表模式,然后选择一个按钮进入编辑屏幕,该应用程序当前隐藏列表布局并显示另一个布局)。在Android上设置导航图标ActionBar

所以我已经添加了actionbar sherlock和一个导航抽屉到所有的活动。我希望能够以编程方式在按下特定按钮时将导航图标从3行切换到箭头。

enter image description here

我无法弄清楚如何做到这一点,虽然。有任何想法吗?

谢谢!

回答

7

的解决这个问题的方法是使用该方法:

setDrawerIndicatorEnabled(boolean enable) 

ActionBarDrawerToggle类的内部。

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)。

+0

感谢您的建议,将工作,但不幸的是我认为它不是最实际的解决方案。不过谢谢你。 – Synergy807

1

据我所知,后退按钮的定制只能通过主题完成。此外,交换背部图标的抽屉图标(在同一活动中)没有任何意义,因为用户仍然可以通过将最左边的边缘向右滑动来访问导航抽屉。它只是没有意义。

如果您确实需要后退图标,那就最有意义,使该屏幕一个新的活动,因为你的确会被添加另一个“级别”的堆栈,这是后面的图标表示。

+0

我同意这没有任何意义,但我有我一直在考虑什么工作... =/ 我有种想模仿添加另一个级别的堆栈。在短期内,我认为交换图像并重写android.R.id.home菜单项按下会更容易。所以我可以发布这个版本。但是,也许你是对的,也许我应该把它变成另一个活动。 – Synergy807

+0

我不一定认为它没有意义,但无论如何,我的看法没有多大价值。事实是Google在Google音乐应用中这样做了。当你从“家”专辑挖掘,你会被带到一个活动,其操作栏显示“返回”插入符号(它需要你回来),但你仍然有一个抽屉,如果你拖。这里是上面的应用程序的sshot,注意操作栏,注意我是如何从左侧拖动和抽屉来临:https://www.dropbox.com/sc/qs00ozm18n6v3ep/a3JuhL9LPu –

3

后:

drawer.setDrawerListener(toggle); 

使用此代码:

getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
getSupportActionBar().setHomeButtonEnabled(true); 
getSupportActionBar().setHomeAsUpIndicator(R.drawable.select);