【问题标题】:Android: Menu item always show up in overflowAndroid:菜单项总是显示在溢出中
【发布时间】:2015-10-23 18:49:47
【问题描述】:

我已经多次查看不同的帖子,但没有一个为我解决了这个问题。我的 XML 定义的菜单项总是显示在溢出中,并且显示了两次。这是 XML 文件:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

<item
    android:id="@+id/add_Playlist"
    android:icon="@android:drawable/ic_menu_add"
    app:showAsAction="ifRoom|withText"
    android:title="@string/addPlaylist" />

</menu>

我正在扩展活动文件中工具栏顶部的菜单:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    setActionBar((android.widget.Toolbar) findViewById(R.id.toolbar));

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu items for use in the action bar
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu_main, menu);
    return super.onCreateOptionsMenu(menu);
}

但菜单项显示在溢出中。在 Android Studio 的渲染视图中,菜单看起来是正确的。

如果你想让我附上快照,我会的。我正在使用 API 23 的模拟器上运行该应用程序(目前)。我不知道我是否应该包含任何其他文件,但如果你想要它们,请告诉我。提前致谢!

[编辑] 这是工具栏的截图: https://gyazo.com/2743b74a8aee07035b8398f1b41002c4

这是我的styles.xml:

<resources
xmlns="http://schemas.android.com/apk/res-auto">
<color name="card_title_text">#111111</color>
<color name="card_desc_text">#aaaaaa</color>
<color name="action_bar_text">#ffffff</color>

<!-- Base application theme. -->
<style name="AppTheme" parent="@style/Theme.AppCompat.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="actionMenuTextColor">@color/action_bar_text</item>
    <item name="android:navigationBarColor">@color/black</item>
    <item name="android:colorForeground">@color/foreground_material_light</item>
    <item name="android:colorBackground">@color/background_material_light</item>
    <item name="android:statusBarColor">@color/statusBarColor</item>
    <item name="android:windowBackground">@color/windowBackground</item>
</style>
<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="actionMenuTextColor">@color/action_bar_text</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />


</resources>

我也尝试设置app:showAsAction="always",但没有成功。没有明显的变化。

【问题讨论】:

  • 请附上快照。
  • 您能找到解决方案吗?
  • 不,我做不到。

标签: java android xml android-activity menu


【解决方案1】:

我不确定我是否完全理解 - 你的意思是你想看到工具栏中的图标而不是 @string/addPlaylist 中的文字

如果是这样,您需要在菜单项中更改以下行:

app:showAsAction="always"

【讨论】:

  • 是的,我想查看图标而不是文本。但是,它仅在溢出菜单中显示为文本,并且显示两次。
  • 您使用的是带有工具栏的主题还是 noToolbar 主题?如果您同时在 xml 中定义工具栏和 toolBar 主题,您可能会看到重复。你能贴一张你的工具栏的截图吗?
  • 也是给toolBar充气,一般使用toolBar.inflateMenu(int resId)方法
  • 我已按照您的要求添加了屏幕截图。使用 toolbar.inflateMenu() 是什么意思?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-29
  • 2013-03-07
  • 2012-11-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多