ActionBarDrawerToggle() 图标不能设置为 Android SDK 5 中的 ActionBar



我在初始化操作栏的图标时遇到了一个简单的问题。我使用的是 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 中。

附言代码工作得很好,事实上,当我切换回 v4 导入并添加用于切换对象初始化的额外参数时(当然必须裸露丑陋的弃用交叉线),图标出现但不在 v7 中。

提前致谢:)

实际上,

如果你看看新v7的javadoc。ActionBarDrawer切换 你可能会意识到新类不提供构造函数,它将 Drawable 作为参数 - 你提供可绘制对象的第三个参数是描述打开抽屉的字符串资源。如果要设置自定义图标,则必须使用另一个ActionBarDrawerToggle构造函数:

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

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

虽然v4。ActionBarDrawerToggle 已被弃用,您可以使用另一种方法来更改图标,如下所示:

getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_menu_drawer);

相关内容

  • 没有找到相关文章

最新更新