是否可以使用Android中的Actionbar sherlock在Action菜单项中实现切换按钮

我有一个应用程序,它在操作菜单项中有切换按钮,虽然我正在使用Actionbar Sherlock,我不知道,如何在操作菜单项中放置切换按钮。 我不想将其作为自定义布局放置在操作栏中,但我想将其作为菜单项放置。 如果有人find解决方案,请帮帮我。

目的,如果我更改切换按钮的状态,它将基于ALphabets对人进行排序,并在出生日期再次对人进行排序。

提前致谢!

Related of "是否可以使用Android中的Actionbar sherlock在Action菜单项中实现切换按钮"

只需将其添加为普通菜单按钮,使用布尔variables检查其状态,并在更改排序模式时更改图标和标题

 boolean birthSort=false; @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_toggle: if(birthSort){ //change your view and sort it by Alphabet item.setIcon(icon1) item.setTitle(title1) birthSort=false; }else{ //change your view and sort it by Date of Birth item.setIcon(icon2) item.setTitle(title2) birthSort=true; } return true; } return super.onOptionsItemSelected(item); } 

不要忘记像任何其他菜单按钮一样在xml中添加它,并配置android:showAsAction如果你想在溢出或外部显示它。

    

其他方法是为ActionBar使用自定义布局:

基本上你定义了一个包含你的Toggle的布局

    

ALTERNATIVE 1:然后在您的ActivityFragment容器中执行以下操作:

 ActionBar actionBar = getSupportActionBar(); actionBar.setCustomView(R.layout.actionbar_top); actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_CUSTOM); ... ToggleButton button = (ToggleButton) findViewById(R.id.actionbar_service_toggle); 

请注意,您正在使用真正的ToggleButton,并且您在代码中将其作为真实对象ToggleButton进行处理,与重新实现自己的切换(主题,可靠性,视图层次结构,本机支持…)相比,它具有许多优点。 。

源代码在这里 。


替代方案2:另一种方法是将自定义视图嵌入到常规菜单视图中:

    

如果像我一样actionLayout不适合你,请尝试app:actionLayout="@layout/actionbar_service_toggle"而不是android:actionLayout="@layout/actionbar_service_toggle"以及app:showAsAction="always"而不是android:showAsAction="always"这是因为如果使用appCompat,则不会使用android命名空间。

所以这是最终版本:

    

 < ?xml version="1.0" encoding="utf-8"?>    

在菜单中创建xml文件:

menu.xml文件

      

然后导航到您的布局文件夹,创建一个新的xml文件并将其命名为switch_layout.xml以下是代码:switch_layout.xml

     

在MainActivity类中复制并粘贴以下代码:
MainActivity.java

  @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu, menu); switchAB = (Switch)menu.findItem(R.id.switchId) .getActionView().findViewById(R.id.switchAB);7 

或者关注这个东西