AppCompat工具栏未在菜单XML中显示图标集

时间:2014-12-06 23:57:26

标签: android xml menu toolbar android-appcompat

使用AppCompat工具栏,我无法使用或不使用标题文本显示图标。标题文字显示正常,但根本没有显示图标。

使用以下xml:

在menu.xml中定义图标和标题文本
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
  xmlns:tools="http://schemas.android.com/tools"
  xmlns:android="http://schemas.android.com/apk/res/android"
  tools:context="ui.CreateProfileActivity">
  <item
    android:id="@+id/create_profile_submit"
    android:title="@string/create_profile_submit"
    app:icon="@drawable/ic_done_white_24dp"
    app:showAsAction="always"/>
</menu>

在我的styles.xml中,我已将图标颜色明确设置为白色(工具栏的背景为蓝色):

<item name="actionBarIconColor">#fff</item>

这是用于显示工具栏的toolbar_actionbar.xml:

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    app:theme="@style/ActionBarThemeOverlay"
    app:popupTheme="@style/ActionBarPopupThemeOverlay"
    android:id="@+id/toolbar_actionbar"
    android:background="?attr/colorPrimaryDark"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

当我以纵向或横向方式启动应用程序时,图标不会出现。

如何让工具栏显示:

  1. 图标和文字
  2. 仅图标(请参阅下面的编辑)
  3. 编辑:2014.12.14

    我可以通过更新menu.xml&#34; icon&#34;来显示图标,只显示图标。要使用的财产&#34; android&#34;而不是&#34; app&#34;。新的xml如下:

    <menu xmlns:app="http://schemas.android.com/apk/res-auto"
      xmlns:tools="http://schemas.android.com/tools"
      xmlns:android="http://schemas.android.com/apk/res/android"
      tools:context="ui.CreateProfileActivity">
      <item
        android:id="@+id/create_profile_submit"
        android:title="@string/create_profile_submit"
        android:icon="@drawable/ic_done_white_24dp"
        app:showAsAction="always"/>
    </menu>
    

    我仍然无法在纵向模式下同时显示图标和文字。它确实以横向模式显示。

3 个答案:

答案 0 :(得分:4)

获取活动中工具栏的参考,并设置图标或其大部分内容

ToolBar toolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);
toolbar.setLogo(R.drawable.yourdrawable);
toolbar.setTitle("Your Title");
toolbar.setSubtitle("list");
toolbar.setNavigationIcon(R.drawable.drawer_icon);

我知道这超出了对问题的要求,我希望能够更清楚地说明你能做什么 尝试解决问题。

我希望这有助于某人。

答案 1 :(得分:2)

尝试此菜单:对于工具栏

`

<item
    android:id="@+id/menu_overflow"
    android:enabled="true"
    android:icon="@drawable/ic_menu_moreoverflow_mtrl_alpha"
    app:showAsAction="always"
    android:title="">
    <menu>
        <item
            android:id="@+id/action_more"
            android:icon="@drawable/ic_more_apps"
            android:orderInCategory="100"
            android:showAsAction="never"
            android:title="More apps"/>
        <item
            android:id="@+id/action_rate"
            android:icon="@drawable/ic_rating"
            android:orderInCategory="100"
            android:showAsAction="never"
            android:title="Rate this app"/>
        <item
            android:id="@+id/action_feedback"
            android:icon="@drawable/ic_feedback"
            android:orderInCategory="100"
            android:showAsAction="never"
            android:title="Feedback"/>
        <item
            android:id="@+id/action_share"
            android:icon="@drawable/ic_share"
            android:orderInCategory="100"
            android:showAsAction="never"
            android:title="Share this app"/>
    </menu>
</item>

`

尝试此操作栏菜单

`

<item
    android:id="@+id/menu_overflow"
    android:enabled="true"
    android:icon="@drawable/ic_menu_moreoverflow_mtrl_alpha"
    android:showAsAction="always"
    android:title="">
    <menu>
        <item
            android:id="@+id/action_more"
            android:icon="@drawable/ic_more_apps"
            android:orderInCategory="100"
            android:showAsAction="never"
            android:title="More apps"/>
        <item
            android:id="@+id/action_rate"
            android:icon="@drawable/ic_rating"
            android:orderInCategory="100"
            android:showAsAction="never"
            android:title="Rate this app"/>
        <item
            android:id="@+id/action_feedback"
            android:icon="@drawable/ic_feedback"
            android:orderInCategory="100"
            android:showAsAction="never"
            android:title="Feedback"/>
        <item
            android:id="@+id/action_share"
            android:icon="@drawable/ic_share"
            android:orderInCategory="100"
            android:showAsAction="never"
            android:title="Share this app"/>
    </menu>
</item>

`

答案 2 :(得分:0)

我认为这太迟了。但是这段代码很好用。您可以尝试一下。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    if (menu instanceof MenuBuilder) {
        ((MenuBuilder) menu).setOptionalIconsVisible(true);
    }
    getMenuInflater().inflate(R.menu.menu_quran, menu);
    return true;
}