关于ToolBar和Actionbar左上角返回箭头的问题

ToolBar作为新特性替代ActionBar好处自然不用多说,但是ToolBar跟actionbar上有几个小细节特别

容易混淆,所以今天抽时间说下这个问题。

1.如果你的activity是继承自ActionBarActivity的话,又想使用Toolbar作为导航条的话,一般你在代码中会这样配置

  Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);


     setSupportActionBar(toolbar);
     getSupportActionBar().setDisplayHomeAsUpEnabled(true);
     getSupportActionBar().setHomeButtonEnabled(true);

然后重写onOptionsItemSelected()方法,通过item的getitemId()得到左上角返回箭头的id号,然后做处理

@Override
    public boolean onOptionsItemSelected(MenuItem item) {

        //监听左上角的返回箭头
        if(item.getItemId()==android.R.id.home){
            finish();
            return true;
        }
        return super.onOptionsItemSelected(item);
    }



2.如果您的activity并没有继承自ActionBarActivity,而是简单的继承自activity的话,向上箭头处理起来可能会不一样,在代码中你应该这样设置

((TextView)findViewById(R.id.toolbar_title)).setText("心语互享");   //给Toolbar设置标题
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

//        android.app.ActionBar actionBar =getActionBar();

        toolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha);      //此处箭头为系统的图标资源

        //设置左上角导航键的点击监听事件
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
在此左上角的点击监听事件是直接监听的导航图标的点击监听事件,因此不用复写onOptionsItemSelected()方法了,但是两种方式达到的效果是一样的,具体

使用哪种方式要根据你的activity集成的父activity来决定,


另外,如果在toolbar上设置溢出菜单的话(右上角的三个小圆点),只能是继承activity来实现,如果集成actionbaractivity的话,在代码里设置会不显示

(在代码中测试没显示,因此下了这个结论,如果不对,欢迎指正)


继承activity,然后用如下代码实现toolbar上的溢出菜单

        toolbar.inflateMenu(R.menu.heart_share_nemu);   //设置溢出菜单
        toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                switch (item.getItemId())
                {

                    case R.id.action_settings :
                        Toast.makeText(HeartShare.this, "请先完善个人资料", Toast.LENGTH_SHORT).show();
                        break;
                }
                return false;
            }
        });




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值