如何让Action Bar在导航抽屉的两种状态下显示图标而不显示标题?

时间:2015-01-31 10:20:09

标签: android android-fragments android-actionbar navigation-drawer android-actionbaractivity

我正在尝试让我的操作栏显示图标,并且在导航抽屉的两种状态(打开和关闭)时都不显示任何标题 我阅读了developers android上有关如何在抽屉可见时修改操作栏内容的文档。正如页面所说,我创建了ActionBarDrawerToggle的实例并设置了图标并将标题设置为null。但是,当我绘制导航抽屉时,我仍然无法看到任何图标和应用标题。以下是我在活动的onCreate中使用的代码

 mToggle = new ActionBarDrawerToggle(
            this,
            drawerLayout,
            R.string.drawer_open_or_close,
            R.string.drawer_open_or_close) {

        /** Called when a drawer has settled in a completely closed state. */
        public void onDrawerClosed(View view) {
            super.onDrawerClosed(view);
            getActionBar().setTitle(R.string.drawer_open_or_close);
            getActionBar().setIcon(R.drawable.icon_144);
            invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
        }

        /** Called when a drawer has settled in a completely open state. */
        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
            getActionBar().setTitle(R.string.drawer_open_or_close);
            getActionBar().setIcon(R.drawable.icon_144);
            invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
        }
    };

正如您所看到的,在完全打开和完全关闭状态下,我已将操作栏标题设置为R.string.drawer_open_or_close,这是一个空字符串。我也在两种情况下都设置了应用程序图标。我在这里缺少什么?

编辑:我忘记将抽屉切换设置为DrawerListener,我做了

drawerLayout.setDrawerListener(mToggle);

现在,当我打开导航抽屉时,应用程序强制关闭,日志猫说 <{1}}

java.lang.NullPointerException

编辑2:我想我们不能将空字符串作为标题

logcat的:

getActionBar().setTitle(R.string.drawer_open_or_close);

1 个答案:

答案 0 :(得分:0)

我不知道这是否是最佳方式,但我最终使用自定义工具栏,然后直接使用findViewById()操纵图标和标题。我使用了我在每个活动布局中包含的常用工具栏。

      

    <ImageView
        android:id="@+id/toolbarLogo"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="center" 
        android:src="@drawable/logo"
        android:adjustViewBounds="true"
        android:padding="2dp"
        android:visibility="gone"
        />
    <TextView 
        android:id="@+id/toolbarTitle"
        android:textAppearance="@android:style/TextAppearance.Theme"
        android:textColor="@color/titleTextColor"
        android:textSize="18sp"  
        android:textStyle="bold"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"  
        android:singleLine="true"  
        />
</android.support.v7.widget.Toolbar>

然后我设置了我需要的东西:

    // Set the custom toolbar
    android.support.v7.widget.Toolbar toolbar = (android.support.v7.widget.Toolbar) findViewById(R.id.toolbar);
    if (toolbar != null) {
        setSupportActionBar(toolbar);
        toolbar.setTitle("");
    }

    TextView title = (TextView) findViewById(R.id.toolbarTitle);
    title.setText(getString(R.string.app_long_name));
    title.setTextColor(getResources().getColor(R.color.colorPrimary));

希望能给你一些想法。