我有一个包含两个项目的菜单(在一个片段中是编辑图标,在另一个片段中是新图标(工作正常)),以及包含三个项目的溢出菜单,我的问题是我有一个溢出菜单顶部的空白区域。我的活动有一个包含三个片段的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" />
答案 0 :(得分:0)
&#34;我有一个包含两个项目的菜单和一个包含三个项目的溢出菜单&#34;
您的XML总共显示6个项目,而不是5.可能您的一个标题字符串为空,导致&#34;空白&#34;溢出的项目。
我建议一次删除一件物品,这有助于找到罪魁祸首。