如何在操作栏中显示汉堡图标和应用图标?

时间:2016-11-01 08:27:41

标签: android android-actionbar navigation-drawer hamburger-menu

我希望在导航抽屉设置中显示ActionBarDrawerToggle中的动态汉堡包图标以及标题前的应用程序图标。像这样:

enter image description here

如果这个信息有用,我有一个抽象的基本抽屉活动,其他活动正在扩展,从导航菜单中获得每个屏幕的活动 - 主要是为了避免当viewpager进入时嵌套片段中遇到的所有问题

我尝试在工具栏中使用自定义视图,如下所示:

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:layout_scrollFlags="scroll|enterAlways"
        app:theme="@style/AppTheme.AppBarOverlay">

        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:drawableLeft="@mipmap/ic_launcher"
            android:drawablePadding="8dp"
            android:drawableStart="@mipmap/ic_launcher"
            android:gravity="center_vertical"
            android:textColor="@android:color/white"
            android:textSize="24sp" />

    </android.support.v7.widget.Toolbar>

在我的DrawerLayout xml中。还尝试了ImageView,然后是TextView。也是负利润率。他们每个人都这样:

enter image description here

如何减少汉堡图标和应用图标之间的空间? 以下是我从每个儿童活动中打电话来创建的方法。

    protected void inflateActivityViewInFrame(int layoutId, int titleStringId) {
        LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View view = inflater.inflate(layoutId, mFrameLayout, false);
        mFrameLayout.addView(view);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        ((TextView) toolbar.findViewById(R.id.title)).setText(titleStringId);
        setSupportActionBar(toolbar);
        final ActionBar actionBar = getSupportActionBar();

        if (actionBar != null) {
            actionBar.setDisplayShowTitleEnabled(false);
            actionBar.setDisplayHomeAsUpEnabled(true);
            mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.navigation_drawer_open, R.string.navigation_drawer_close) {

                public void onDrawerClosed(View view) {
                    supportInvalidateOptionsMenu();
                }

                public void onDrawerOpened(View drawerView) {
                    supportInvalidateOptionsMenu();
                }
            };
            mDrawerToggle.setDrawerIndicatorEnabled(true);
            mDrawerLayout.addDrawerListener(mDrawerToggle);
            mDrawerToggle.syncState();
        }
    }

我也尝试了以下组合:

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    app:layout_scrollFlags="scroll|enterAlways"
    app:theme="@style/AppTheme.AppBarOverlay">

</android.support.v7.widget.Toolbar>

在xml的DrawerLayout和以下代码中进行初始化:

    protected void inflateActivityViewInFrame(int layoutId, int titleStringId) {
        LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View view = inflater.inflate(layoutId, mFrameLayout, false);
        mFrameLayout.addView(view);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        final ActionBar actionBar = getSupportActionBar();

        if (actionBar != null) {
            actionBar.setDisplayShowTitleEnabled(false);
            actionBar.setDisplayHomeAsUpEnabled(true);
            actionBar.setDisplayUseLogoEnabled(true);
            mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.navigation_drawer_open, R.string.navigation_drawer_close) {

                public void onDrawerClosed(View view) {
                    supportInvalidateOptionsMenu();
                }

                public void onDrawerOpened(View drawerView) {
                    supportInvalidateOptionsMenu();
                }
            };
            mDrawerToggle.setDrawerIndicatorEnabled(true);
            mDrawerLayout.addDrawerListener(mDrawerToggle);
            mDrawerToggle.syncState();
        }
        toolbar.setTitle(titleStringId);
    }

即使使用setDisplayUseLogoEnabled(true),也不会显示应用徽标。 enter image description here

我在这里做错了什么?如何以正确的间距显示菜单图标和应用徽标?

0 个答案:

没有答案