【发布时间】: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