ActionBar、Menu笔记

一、Menu相关

1.Menu是什么?

1)不是view
2)是一个可以呈现view的菜单对象

2.Menu应用场景?

以菜单形式实现与用户的交互。
1)结合toolbar一起使用
2)结合NavigationView一起使用

3.Menu的应用类型?

1)OptionMenu
2)ContextMenu
3)SubMenu(子菜单)
4)............

4.Menu对象应用的实现?

安卓的ActionBar可以创建menu,步骤如下:

1)首先在res/目录下新建Menu directory

2 ) 创建menu的文件,如下:



<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item android:id="@+id/item1"
        android:orderInCategory="1"
        app:showAsAction="always"
        android:title="title1"
        android:icon="@android:drawable/ic_menu_call"/>

    <item android:id="@+id/item2"
        android:orderInCategory="2"
        app:showAsAction="always"
        android:title="title2"
        android:icon="@android:drawable/ic_menu_delete"
        />
</menu>

3 ) 然后在主界面下重写这个方法,并用刚刚的menu

 public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.mymenu, menu);
        return true;
    }

4)可以对menu实现按钮的点击事件

@Override
    public boolean onOptionsItemSelected(MenuItem item) {

        drawtoggle.onOptionsItemSelected(item);

        switch (item.getItemId()){
            case R.id.item1:
                startActivity(new Intent(MainActivity.this,OtherActivity.class));
                break;

            case R.id.item2:
                Toast.makeText(this,"item2",Toast.LENGTH_SHORT).show();
                break;
            
        };
        return super.onOptionsItemSelected(item);
    }



二、ActionBar相关(与drawerlayout、navigationView)结合使用


1)ActionBar呢,可以添加最左的按钮,像这样,
 //可以弄出左上角的回退按钮
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

2)然后可以为其添加事件,在此提供一种方法

 private void setDrawer() {
        //1.先用drawerlayout添加监听器
        //2.发现它是interface,所以可以找监听器的子类
        //3.找到drawtoggle,它是DrawerListener的实现子类
        drawtoggle = new ActionBarDrawerToggle(this,drawerLayout,R.string.open,R.string.close);
        drawerLayout.addDrawerListener(drawtoggle);
    }

3)重写其一个方法,实现同步
  /**该方法是在方法onCreateOptionsMenu之前执行此方法*/
    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        //同步drawerToggle状态
        drawtoggle.syncState();
        return super.onPrepareOptionsMenu(menu);
    }

4)最后,在onOptionsItemSelected方法中加一句代码即可实现

 @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        //openOrCloseDrawer();
        drawtoggle.onOptionsItemSelected(item);

        switch (item.getItemId()){
            case R.id.item1:
                startActivity(new Intent(MainActivity.this,OtherActivity.class));
                break;

            case R.id.item2:
                Toast.makeText(this,"item2",Toast.LENGTH_SHORT).show();
                break;
            case android.R.id.home:
             //   dealDraw();
                break;
        };
        return super.onOptionsItemSelected(item);
    }



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值