为什么我在使用导航抽屉时出错图标?

时间:2015-06-20 04:51:13

标签: android navigation-drawer android-icons

我正在使用导航抽屉构建应用程序。我想在其中添加ic_drawer图标。我正在使用它:

mDrawerToggle = new ActionBarDrawerToggle(
        this, /* host Activity */
        mDrawerLayout, /* DrawerLayout object */
        R.drawable.ic_drawer, /* nav drawer icon to replace 'Up' caret */
        R.string.drawer_open, /* "open drawer" description */
        R.string.drawer_close /* "close drawer" description */
) { ... }

    // Set the drawer toggle as the DrawerListener
    mDrawerLayout.setDrawerListener(mDrawerToggle);

实际上,我的图标错了,而且我没有动画。我该怎么办呢?除了我的代码中的drawable.ic_drawer,我无法找到任何东西。

屏幕如下。

空白屏幕截图。   enter image description here

打开菜单屏幕。

enter image description here

您可以在两张图片上看到它不是ic_drawer图片。实际上,在IDEA中,我看到了正确的形象。

4 个答案:

答案 0 :(得分:5)

确保您使用 v7 ActionBarDrawerToggle

mActionBarDrawerToggle = new ActionBarDrawerToggle(
        this, your_drawer_layout, your_tool_bar, R.string.open, R.string.close
);

正如您所看到的,v7 ActionBarDraweToggle具有不同的构造函数,并且不会询问您的Icon。因为它从android资源中自动获取。

答案 1 :(得分:3)

您可以在Android Developer中引用Creating a Navigation Drawer

很少有人跳过下面的代码。但代码显示正确的图标非常重要。
我希望你能阅读更多参考资料。

@Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    // Sync the toggle state after onRestoreInstanceState has occurred.
    mDrawerToggle.syncState();
}

如果您使用的是最新的SDK,则可以使用compat-v7和工具栏。
我经验丰富的汉堡图标不显示。所以我需要其他方式。
终于用compt-v7和工具栏解决了。

答案 2 :(得分:0)

您是否在DrawerLayout添加了ActionBarDrawerToggle听众?如果没有,请加上这些:

mDrawerLayout.setDrawerListener(mDrawerToggle);//mDrawerLayout is DrawerLayout

答案 3 :(得分:0)

@Moinkhan是对的。您需要将构造函数从v4替换为v7中的新构造函数。替换这个旧代码:

mDrawerToggle = new ActionBarDrawerToggle(
    getActivity(),                    
    mDrawerLayout,                    
    R.drawable.ic_drawer,
    "Open drawer",  
    "Close drawer"
)

这个

import android.support.v7.app.ActionBarDrawerToggle;

(从.v4.app.ActionBarDrawerToggle中删除旧导入)

mDrawerToggle = new ActionBarDrawerToggle(
    getActivity(), 
    mDrawerLayout, 
    "Open drawer", 
    "Close drawer"
);

它现在应该显示一个动画抽屉图标,在展开时变为左箭头