我的溢出菜单中的Android空白区域

时间:2016-04-01 18:58:13

标签: android android-menu

我有一个包含两个项目的菜单(在一个片段中是编辑图标,在另一个片段中是新图标(工作正常)),以及包含三个项目的溢出菜单,我的问题是我有一个溢出菜单顶部的空白区域。我的活动有一个包含三个片段的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"  />

1 个答案:

答案 0 :(得分:0)

&#34;我有一个包含两个项目的菜单和一个包含三个项目的溢出菜单&#34;

您的XML总共显示6个项目,而不是5.可能您的一个标题字符串为空,导致&#34;空白&#34;溢出的项目。

我建议一次删除一件物品,这有助于找到罪魁祸首。