从上下文操作栏中删除标题

时间:2014-04-23 19:26:34

标签: android contextual-action-bar android-actionmode

我想删除在上下文操作栏中为标题分配的视图。

This is what I want to remove

请注意,我不想设置标题;我希望View完全消失。这是为了允许更多空间,以便可以在菜单栏上显示操作,而不是将其放入溢出菜单。

另请注意,我不想设置android:showAsAction="always"。我想让Android决定图标的空间大小。我只想通过删除为标题保留的空白区域来更多空间

更新

我尝试过的事情:

  • ActionMode.setCustomView(null)
  • ActionMode.setTitleOptionalHint(true)
  • ActionMode.setTitle("")

不幸的是,这些都没有奏效。


更新2

事实证明,我想要的结果是不可能以我尝试的方式实现的。删除标题将不允许有更多图标; Android根据设备屏幕大小设置硬限制。如果您想在菜单中添加更多图标,请参阅@adneal提供的答案。

如果您确实拥有一个标题(如下所示)并希望将其删除,那么您可以在接受的答案中调用@CommonsWare提供的ActionMode.setTitle("")

Example of a menu with a title

5 个答案:

答案 0 :(得分:5)

  

另请注意,我不想设置android:showAsAction =“always”

如果您需要ActionBar中的两个以上操作按钮,至少在较小的屏幕上,则必须这样做。 ActionBarPolicy确定要在ActionBardefault amount is 2.

中放置的操作按钮数量

覆盖该默认值的唯一方法是让MenuItem“始终”出现。

    @Override
    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
        mode.setTitle(null);

        for (int i = 0; i < 5; i++) {
            menu.add("Item " + (i + 1)).setIcon(android.R.drawable.sym_def_app_icon)
                    .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
        }
        return true;
    }

<强>结果

答案 1 :(得分:2)

尝试在setCustomView(null)上调用ActionMode

如果不起作用,请尝试setTitleOptionalHint(true)上的ActionMode

如果不起作用,请尝试setTitle("")上的ActionMode

答案 2 :(得分:1)

根据adneal的回答,我遇到了如何处理这个问题的问题。 所以我发现这个解决方案更简单:  仍然使用xml/inflater但添加

 menu.findItem(R.id.whatever).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);

答案 3 :(得分:0)

@Ovrride
protected void onCreate(Bundle savedInstanceState……

requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

setContentView(R.layout.prva.xml);

答案 4 :(得分:0)

我尝试了这里提供的解决方案并做了一些观察:

  • 标题的视图始终包含在view-hierachy( - &gt;来自Android Studio的布局检查器)中但它位于后台并且将被内容覆盖。
  • setContentView添加提供给layuot的视图(在前台)。因此setContentView(null)不会删除标题的视图。 (仍在布局检查器中可见)
  • 在给布局充气时会覆盖
  • app:showAsAction="always"。您可以设置总共显示3个项目,但只显示2个项目。

但是在充气菜单后以编程方式设置.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS)