在Android SDK 5中,ActionBarDrawerToggle()图标无法设置到操作栏中。

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中不显示。

P.S. 代码完全正常运行,实际上当我切换回v4导入并添加额外的参数以初始化切换对象(当然要忍受丑陋的已弃用的跨线),图标出现了,但在v7中没有出现。

提前感谢 :)

2个回答

8

实际上,如果您查看新的v7.ActionBarDrawerToggle的javadoc,您会意识到新类没有提供以Drawable为参数的构造函数——您提供Drawable的第3个参数是描述打开抽屉的String资源。如果您想设置自定义图标,您必须使用另一个ActionBarDrawerToggle构造函数:

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

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

2
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - DreamBigAlvin
3
我使用Toolbar.setNavigationIcon(int resId)方法来设置自定义图标,并在其下方添加可选背景。同时,我也关注Toolbar的setLogo(Drawable drawable)方法。 - Oleg Osipenko

1
尽管 v4.ActionBarDrawerToggle 已被弃用,但您可以使用另一种方法来更改图标,例如以下示例:
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_menu_drawer);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接