更改图标导航抽屉 [英] Change Icon Of Navigation Drawer

本文介绍了更改图标导航抽屉的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有改变我的抽屉式导航栏图标,一个自定义的麻烦。目前我已经不得不实施其顶部有3条水平线的标准抽屉里的图标,但现在我要与我的自定义抽屉图标代替。

这是我的 mDrawerToggle 是目前:

  mDrawerToggle =新ActionBarDrawerToggle(这一点,
    mDrawerLayout,
    R.drawable.app_icon,
    R.string.drawer_open){
        //我的code
    };
 

解决方案

下面是摘自样本code 创建导航抽屉

Activity.class

 公共类MainActivity延伸活动{
    私人DrawerLayout mDrawerLayout;
    私人ActionBarDrawerToggle mDrawerToggle;
    ...

    公共无效的onCreate(包savedInstanceState){
        ...

        mDrawerLayout =(DrawerLayout)findViewById(R.id.drawer_layout);
        mDrawerToggle =新ActionBarDrawerToggle(
                此时,/ *主机活动* /
                mDrawerLayout,/ * DrawerLayout对象* /
                R.drawable.ic_drawer,/ *导航抽屉图标来取代上插入符* /
                R.string.drawer_open,/ *开放抽屉的描述* /
                R.string.drawer_close / *关闭抽屉里的描述* /
                ){

            / **调用时抽屉处于完全封闭的状态下稳定运行。 * /
            公共无效onDrawerClosed(查看视图){
                super.onDrawerClosed(视图);
                。getActionBar()的setTitle(mTitle);
            }

            / **调用时的抽屉里一个完全开放的状态下稳定运行。 * /
            公共无效onDrawerOpened(查看drawerView){
                super.onDrawerOpened(drawerView);
                。getActionBar()的setTitle(mDrawerTitle);
            }
        };

        //设置抽屉切换为DrawerListener
        mDrawerLayout.setDrawerListener(mDrawerToggle);

        getActionBar()setDisplayHomeAsUpEnabled(真)。
        getActionBar()setHomeButtonEnabled(真)。
    }

    @覆盖
    保护无效onPostCreate(包savedInstanceState){
        super.onPostCreate(savedInstanceState);
        //同步发生onRestoreInstanceState后切换状态。
        mDrawerToggle.syncState();
    }

    @覆盖
    公共无效onConfigurationChanged(配置NEWCONFIG){
        super.onConfigurationChanged(NEWCONFIG);
        mDrawerToggle.onConfigurationChanged(NEWCONFIG);
    }

    @覆盖
    公共布尔onOptionsItemSelected(菜单项项){
        //通过事件ActionBarDrawerToggle,如果它返回
        //真,那么它处理的应用程序图标触摸事件
        如果(mDrawerToggle.onOptionsItemSelected(项目)){
          返回true;
        }
        //处理您的其他动作条上的项目...

        返回super.onOptionsItemSelected(项目);
    }

    ...
}
 

I am having trouble with changing my navigation drawer icon to a custom one. I've currently had to implement the standard drawer icon which has 3 horizontal lines on top, but now I want to replace this with my custom drawer icon.

This is how my mDrawerToggle is at the moment:

mDrawerToggle=new ActionBarDrawerToggle(this,
    mDrawerLayout,
    R.drawable.app_icon,
    R.string.drawer_open) {
        // My code
    };

解决方案

Here is the sample code taken from Creating a Navigation Drawer

Activity.class

public class MainActivity extends Activity {
    private DrawerLayout mDrawerLayout;
    private ActionBarDrawerToggle mDrawerToggle;
    ...

    public void onCreate(Bundle savedInstanceState) {
        ...

        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        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 */
                ) {

            /** Called when a drawer has settled in a completely closed state. */
            public void onDrawerClosed(View view) {
                super.onDrawerClosed(view);
                getActionBar().setTitle(mTitle);
            }

            /** Called when a drawer has settled in a completely open state. */
            public void onDrawerOpened(View drawerView) {
                super.onDrawerOpened(drawerView);
                getActionBar().setTitle(mDrawerTitle);
            }
        };

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

        getActionBar().setDisplayHomeAsUpEnabled(true);
        getActionBar().setHomeButtonEnabled(true);
    }

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

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        mDrawerToggle.onConfigurationChanged(newConfig);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Pass the event to ActionBarDrawerToggle, if it returns
        // true, then it has handled the app icon touch event
        if (mDrawerToggle.onOptionsItemSelected(item)) {
          return true;
        }
        // Handle your other action bar items...

        return super.onOptionsItemSelected(item);
    }

    ...
}

这篇关于更改图标导航抽屉的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆