【问题标题】:Navigation drawer doesn't show icon in actionbar导航抽屉在操作栏中不显示图标
【发布时间】:2015-04-27 11:50:49
【问题描述】:

我已将抽屉式导航添加到包含 PagerSlidingStrip 的活动中。当我从屏幕的左向右滑动时可以看到抽屉式导航,但在操作栏中看不到抽屉式导航图标。 以下是我的代码-

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <FrameLayout
        android:id="@+id/content_frame_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    <com.astuetz.PagerSlidingTabStrip
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="48dip"
        android:background="#8E58D4"
        app:pstsIndicatorColor="#5B349E"

        app:pstsDividerColor="#8E58D4"
        app:pstsTabSwitch="true"
      />
    <android.support.v4.view.ViewPager
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/tabs"
        android:layout_alignParentBottom="true" />


</RelativeLayout>

    <ListView android:id="@+id/left_drawer"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:choiceMode="singleChoice"
        android:divider="@android:color/transparent"
        android:dividerHeight="0dp"
        android:background="#111"/>
    </android.support.v4.widget.DrawerLayout>

【问题讨论】:

  • 你看到我的回答了吗
  • @Lokesh 是的..+你的答案。
  • 你找到解决方案了吗?

标签: android navigation-drawer pagerslidingtabstrip


【解决方案1】:

添加这个

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    return super.onOptionsItemSelected(item);
}

【讨论】:

    【解决方案2】:

    试试这个让你的菜单图标可见。

            actionBar = getActionBar();
            actionBar.setDisplayShowTitleEnabled(true);
            actionBar.setDisplayUseLogoEnabled(false);
            actionBar.setDisplayHomeAsUpEnabled(false);
            actionBar.setDisplayUseLogoEnabled(false);
            actionBar.setHomeButtonEnabled(true);
            actionBar.setIcon(R.drawable.menu);
    

    并像下面那样覆盖 onOptionsItemSelected 以打开抽屉

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case android.R.id.home:
            //Open your drawer here
            break;
        }
        return super.onOptionsItemSelected(item);
    }
    

    【讨论】:

      【解决方案3】:

      使用

               ActionBar actionBar = getSupportActionBar();
              actionBar .setDisplayHomeAsUpEnabled(true);
              actionbar.setDisplayShowHomeEnabled(true);
                 actionBar.setHomeButtonEnabled(true); 
      

      并使用

      getActionBar().setDisplayHomeAsUpEnabled(true); // also required
          if (Build.VERSION.SDK_INT >= 18) {
              getActionBar().setHomeAsUpIndicator(
                  getResources().getDrawable(R.drawable.ic_navigation_drawer));
          }
      

      【讨论】:

      • 使用 actionbar.setDisplayShowHomeEnabled(true);
      • 你的应用主题是什么?
      • 如果您仍然没有看到导航图标stackoverflow.com/questions/19724567/…,请检查此链接
      • 应用主题-Theme.AppCompat
      【解决方案4】:

      添加以下代码

      /**
           * When using the ActionBarDrawerToggle, you must call it during
           * onPostCreate() and onConfigurationChanged()...
           */
      
          @Override
          protected void onPostCreate(Bundle savedInstanceState) {
              super.onPostCreate(savedInstanceState);
              // Sync the toggle state after onRestoreInstanceState has occurred.
              mDrawerToggle.syncState();
          }
      
          @Override
          public void onConfigurationChanged(Configuration newConfig) {
              super.onConfigurationChanged(newConfig);
              // Pass any configuration change to the drawer toggls
              mDrawerToggle.onConfigurationChanged(newConfig);
          }
      

      【讨论】:

        【解决方案5】:

        使用这个

            getSupportActionBar().setDisplayUseLogoEnabled(true);
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            getSupportActionBar().setLogo(R.drawable.ic_launcher);
            getSupportActionBar().setDisplayShowHomeEnabled(true);
        

        这可能对你有帮助

        【讨论】:

        • 它显示导航抽屉图标和后退图标..但点击图标时不打开导航抽屉
        【解决方案6】:

        删除此行,因为这会导致您的操作栏不可变

        final ActionBar actionBar = getSupportActionBar();
        

        拥有这个

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            getSupportActionBar().setHomeButtonEnabled(true);
        

        并通过覆盖它来更改操作栏标题

        @Override
        public void setTitle(CharSequence title) {
            mTitle = title;
            getSupportActionBar().setTitle(mTitle);
        }
        

        【讨论】:

          猜你喜欢
          • 2013-06-06
          • 1970-01-01
          • 2016-01-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多