android - 如何隐藏 ActionBar 中的 ChromeCast MediaRoute MenuItem?

标签 android android-actionbar chromecast

我正在尝试在 ChromeCast 应用程序的上下文中使用 ActionBar 设置搜索界面(使用来自 CastCompanionLibrary 和 VideoBrowserActivity git 项目的代码)。我需要一种隐藏 ChromeCast MediaRoute MenuItem(简称 ChromeCast 按钮)的方法。它并列在搜索图标旁边,当用户点击搜索图标时,ChromeCast 按钮应该消失,以便扩展搜索 View (尽可能多的 ActionBar)。

首先,定义我的 ActionBar 的 XML 如下所示。

<menu xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto" >
 ...
 <item android:id="@+id/media_route_menu_item"
  android:title="@string/media_route_menu_title"
  app:actionProviderClass="android.support.v7.app.MediaRouteActionProvider"
  app:showAsAction="always"/>
 <item android:id="@+id/action_search"
  android:title="@string/action_search"
  android:icon="@drawable/ic_action_search"
  android:actionViewClass="android.widget.SearchView"
  app:showAsAction="always"/>
</menu>

然后,在我的 Activity (ActionBarActivity 的子类)中,我按如下方式创建菜单。

public boolean onCreateOptionsMenu(Menu menu) {
 super.onCreateOptionsMenu(menu);
 getMenuInflator().inflate(R.menu.main, menu);
 MenuItem miSearch = menu.findItem(R.id.action_search); 
 SearchView view = (SearchView)miSearch.getActionView();
 SearchManager searchManager = (SearchManager)getSystemService(Context.SEARCH_SERVICE);
 view.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
 mediaRouteMenuItem = mCastManager.addMediaRouterButton(menu, R.id.media_route_menu_item);
 return true;
}

我尝试如下隐藏 MediaRoute 菜单项(此方法取自另一篇 SO 帖子)。

public boolean onOptionsItemSelected(MenuItem item) {
 switch(item.getItemId()) {
  case R.id.action_search:
   mediaRouteMenuItem.setVisible(false);
   invalidateOptionsMenu();
   return true;
 }
}

但是,当用户单击搜索图标时,MediaRoute 菜单项仍然可见。

  • 如果知道(如果可以隐藏 ChromeCast 按钮)如何在用户取消搜索操作时再次显示该按钮,那就太好了。

感谢任何帮助。

最佳答案

我认为您所看到的(或现在看到的)是由 Action 提供者/ Action 类的顺序决定的。展开的可折叠操作 View 将占据操作栏末尾的空间,但不会破坏它之前的内容。因此,将 SearchView 放在首位将让它占据整个栏。

关于android - 如何隐藏 ActionBar 中的 ChromeCast MediaRoute MenuItem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23122020/

相关文章:

php - android-php-mysql : json + rmi

android - 如何从 PlaceholderFragment 启动 Intent?

java - Android 操作栏首页

android - CAB "check"按钮

android - 将 YouTube 视频转换到 Chromecast

java - 将自定义内容转换到 chromecast

ios - 使用 GCKMediaQueueItem 在 Chromecast 上排队多个图像

javascript - 脚本加载不在 Android 中触发

java - 如何从Android中的文件夹中删除具有特定扩展名的文件

android - 如何自定义 Action 模式的颜色和文字?