汉堡包图标未显示为工具栏中的默认图标

Hamburger icon doesn't show as default icon in toolbar

这是我的 setUpToolbar 方法。它在 mainActivity 的 onCreate 中被调用。我的问题是,为什么 humberger 图标没有显示在工具栏中,而工具栏却显示工具栏中的后退导航图标。

这是我的setUptoolbar方法。

private void setUpToolbar() {

        Toolbar archiveToolbar = (Toolbar)findViewById(R.id.xmlToolbarMain);
        setSupportActionBar(archiveToolbar);

        getSupportActionBar().setDisplayShowTitleEnabled(false);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    }

这是我的工具栏 xml :

 <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/xmlToolbarMain"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="#34465d"
            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
            android:transitionName="actionBar"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
            />

这是我在 values 目录下的风格:

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>


</resources>

您必须通过在 setUpToolbar 方法中添加以下代码来添加该图标

getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_menu);// whatever your icon name
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

将此添加到您的代码中:

toolbar.setNavigationIcon(R.drawable.hamburger);
toolbar.setTitle("");

对于此功能,您需要添加 ActionBarDrawerToggle 对象并将其与工具栏同步。

像这样:

public class DrawerActivity extends AppCompatActivity {

private DrawerLayout drawerLayout;
private ActionBarDrawerToggle drawerToggle;

...

private void setupDrawerLayout() {
     drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
     drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.open, R.string.close);
     drawerLayout.setDrawerListener(drawerToggle);
}

...

@Override
protected void onPostCreate(Bundle savedInstanceState) {
     super.onPostCreate(savedInstanceState);
     drawerToggle.syncState();
}

这应该有所帮助。

第一种方法

手动设置自定义汉堡图标

getSupportActionBar().setIcon(R.drawable.your_hamburger_icon);

汉堡包适合 ActionBarDrawerToggle

然后添加DrawerLayoutActionBarDrawerToggle