ActionBarDrawerToggle()图标无法设置为Android SDK 5中的ActionBar

Ams*_*Ams 9 java android android-actionbar drawertoggle

我的操作栏初始化我的图标有一个简单的问题.我使用的是Android SDK 5,因为android.support.v4.app.ActionBarDrawerToggle;我已弃用,我导入了v7支持并用以下内容替换了我的导入:android.support.v7.app.ActionBarDrawerToggle; 即与v7相同的包.

现在,当我初始化我的ActionBarDrawerToggle对象以关联DrawerLayout从我导入的对象:import android.support.v4.widget.DrawerLayout;我被迫删除一个参数,这似乎没问题(虽然不知道为什么!).但是我的图标没有进入我的ActionBar.这是我的ActionBarDrawerToggle对象的初始化:

mActionBarDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout,
            R.drawable.ic_drawer, R.string.drawer_open) {

        /** Called when a drawer has settled in a completely closed state. */
        @Override
        public void onDrawerClosed(View view) {
            super.onDrawerClosed(view);
            invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()

        }

        /** Called when a drawer has settled in a completely open state. */
        @Override
        public void onDrawerOpened(View view) {
            super.onDrawerOpened(view);
            invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()

        }
    };
Run Code Online (Sandbox Code Playgroud)

我的资源中有图像 R.drawable.ic_drawer

我似乎无法找到为什么我的图标没有出现在v7中.

PS代码工作得非常好,事实上,当我切换回v4导入并为切换对象初始化添加额外的参数(不得不裸露与丑陋的不赞成交叉线)时,图标出现但不在v7中.

提前致谢 :)

Ole*_*nko 8

实际上,如果你看一下新的v7.ActionBarDrawerToggle的 javadoc 你可以意识到新类没有提供构造函数,它将Drawable作为参数 - 你提供Drawable的第三个参数是描述打开抽屉的String resourse.如果要设置自定义图标,则必须使用另一个ActionBarDrawerToggle构造函数:

ActionBarDrawerToggle(Activity activity, DrawerLayout drawerLayout, Toolbar toolbar, int openDrawerContentDescRes, int closeDrawerContentDescRes)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,工具栏的导航图标将用作抽屉图标

  • 我使用Toolbar.setNavigationIcon(int resId)和自定义图标,并在其下方有可选背景.还关注工具栏的方法setLogo(Drawable drawable) (3认同)
  • 有没有办法添加一个图标,仍然有点击家庭抽屉操作栏的事件..? (2认同)