navegation Drawable中icon_drawable的问题

时间:2015-06-01 19:50:54

标签: android android-actionbar

我试图在ActionBar中显示Icon_drawble,但是当R.drawable.ic_drawer位于第一个位置时,在操作栏中显示返回箭头。

像这样:

enter image description here

mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        mDrawerToggle = new ActionBarDrawerToggle(
                this,
                mDrawerLayout,
                R.drawable.ic_drawer,
                R.string.drawer_open, 
                R.string.drawer_close

                ) { 

我需要显示这样的内容,但上面的代码不起作用。

enter image description here

如果我将R.drawable.ic_drawer更改为其他位置,则会给出以下logcat错误。

mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        mDrawerToggle = new ActionBarDrawerToggle(
                this,
                mDrawerLayout,

                R.string.drawer_open,
                R.drawable.ic_drawer,//another position
                R.string.drawer_close 

                ) 

logcat的:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.navegatiodrawer/com.example.navegatiodrawer.MainActivity}: android.content.res.Resources$NotFoundException: File Open navigation drawer from drawable resource ID

1 个答案:

答案 0 :(得分:1)

这似乎是最近版本的AppCompat库中的一个错误。

部分混淆可能是由于Android Studio的新项目向导在您创建新的导航抽屉活动时生成了错误的代码 - 它使用了v4 support library ActionBarDrawerToggle,这是不推荐使用的。相反,它应该使用v7 support library ActionBarDrawerToggle

您有两种选择:

  • 最好的选择是切换到v7 ActionBarDrawerToggle。为此,请将导入更改为使用android.support.v7.app.ActionBarDrawerToggle而不是android.support.v4.app.ActionBarDrawerToggle。您需要进行的唯一其他更改是完全删除ic_drawer参数 - 较新版本的切换会自动生成您正在寻找的汉堡包。

  • 如果您坚持使用v4切换或自定义图标,则可以恢复为旧版本的支持库。在创建新的导航抽屉活动时使用默认生成的项目,我能够通过恢复到build.gradle中的com.android.support:appcompat-v7:22.1.0来回避这个错误。

已有a bug in the issue tracker用于更新向导生成的代码。我不希望v4切换得到修复,因为它已被弃用。