【问题标题】:Android empty space in my overflow menu我的溢出菜单中的Android空白
【发布时间】:2016-04-01 18:58:12
【问题描述】:

我有一个包含两个项目的菜单(一个片段是编辑图标,另一个片段是新图标(工作正常)),还有一个包含三个项目的溢出菜单,我的问题是我有一个我的溢出菜单顶部的空白区域。我的活动有一个带有三个片段的 ViewPager。 我已尝试删除 android:scaleType,添加 orderInCategory,但问题仍然存在。

<item
    android:id="@+id/btn_refresh"
    android:icon="@drawable/ic_action_refresh"
    android:title="@string/action_refresh"
    android:scaleType="fitXY"
    app:showAsAction="always"/>
<item
    android:id="@+id/btn_new"
    android:icon="@drawable/ic_action_add"
    android:title="@string/action_new"
    android:orderInCategory="2"
    app:showAsAction="always"/>

<item android:id="@+id/btn_edit"
    android:icon="@drawable/ic_action_edit"
    android:title="@string/action_edit"
    android:orderInCategory="2"
    app:showAsAction="always"/>

<item android:id="@+id/recalculate_values"
      android:title="@string/recalculate_values"
      android:scaleType="fitXY"
      app:showAsAction="never"/>

<item android:id="@+id/about"
      android:title="@string/about"
      android:scaleType="fitXY"
      app:showAsAction="never"/>

<item android:id="@+id/exit"
      android:title="@string/exit"
      android:scaleType="fitXY"
      app:showAsAction="never"/>

我已经尝试了一些我在这些帖子 Android - Correct use of invalidateOptionsMenu() 和 Action Bar shows up empty in Android app 中找到的答案,所以我在这段代码之后调用了 invalidateOptionsMenu():

    Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayShowTitleEnabled(false);
    getSupportActionBar().setHomeButtonEnabled(true);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setHomeAsUpIndicator(R.mipmap.ic_launcher);

关于我的活动:

   @Override
public boolean onPrepareOptionsMenu(Menu menu) {

    MenuItem mNew = menu.findItem(R.id.btn_new);
    MenuItem mEdit = menu.findItem(R.id.btn_edit);

    int frag = viewPager.getCurrentItem();

    if(frag == 0) {
        mNew.setVisible(false);
        mEdit.setVisible(true);
        return true;
    }else {
        mNew.setVisible(true);
        mEdit.setVisible(false);
    }
    return super.onPrepareOptionsMenu(menu);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_show_event, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem menuItem) {
    switch (menuItem.getItemId()) {
    //manage items
}

并且在每个片段中,我调用方法 onCreateView() setHasOptionsMenu(true); 我将不胜感激任何提示,在此先感谢。

编辑 如果有帮助,我会附上 xml 活动

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:theme="@style/AppTheme"
        app:popupTheme="@style/AppTheme.PopupOverlay" />

    <android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:tabMode="fixed"
        app:tabGravity="fill"/>
</android.support.design.widget.AppBarLayout>

<android.support.v4.view.ViewPager
    android:id="@+id/viewpager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"  />

【问题讨论】:

  • 我指的是任何解决方案。但无论如何,我发现 onPrepareOptionsMenu 的 else 部分没有返回任何内容。我猜你应该从这里返回true。
  • @ReazMurshed 感谢您抽出宝贵时间,我修改了这部分代码但仍然是空白,我将使用活动 xml 编辑更多详细信息。

标签: android android-menu


【解决方案1】:

“我有一个包含两个项目的菜单和一个包含三个项目的溢出菜单”

您的 XML 总共显示 6 个项目,而不是 5 个。可能您的标题字符串之一为空,导致“空”项目溢出。

我建议一次删除一个项目,这应该有助于找到罪魁祸首。

【讨论】:

  • 对不起,显示 2 个项目的菜单交换了取决于片段的图标,(一个片段有项目编辑,另一个有新项目)我在方法上管理它onPrepareOptionsMenu,这就是为什么有 6 个项目
猜你喜欢
  • 2013-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多