9

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

现在,当我初始化我的 ActionBarDrawerToggle 对象以与我DrawerLayout导入的对象关联时:import android.support.v4.widget.DrawerLayout;我被迫删除一个参数,这似乎没问题(虽然不知道为什么!)。但我的图标没有进入我的操作栏中。这是我的 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()

        }
    };

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

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

PS 代码工作得非常好,事实上,当我切换回 v4 导入并添加用于切换对象初始化的额外参数(当然必须使用丑陋的不推荐使用的交叉线)时,图标出现但在 v7 中没有。

提前致谢 :)

4

2 回答 2

8

实际上,如果您查看 new v7.ActionBarDrawerToggle的 javadoc,您可能会意识到新类不提供构造函数,该构造函数将 Drawable 作为参数 - 您提供 Drawable 的第三个参数是描述打开抽屉的字符串资源。如果要设置自定义图标,则必须使用另一个 ActionBarDrawerToggle 构造函数:

ActionBarDrawerToggle(Activity activity, DrawerLayout drawerLayout, Toolbar toolbar, int openDrawerContentDescRes, int closeDrawerContentDescRes)

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

于 2014-11-27T14:38:49.890 回答
1

虽然 v4.ActionBarDrawerToggle 已被弃用,但您可以使用另一种方法来更改图标,例如:

getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_menu_drawer);
于 2016-08-19T15:58:45.593 回答