一、Menu相关
1.Menu是什么?
1)不是view2)是一个可以呈现view的菜单对象
2.Menu应用场景?
以菜单形式实现与用户的交互。1)结合toolbar一起使用
2)结合NavigationView一起使用
3.Menu的应用类型?
1)OptionMenu2)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呢,可以添加最左的按钮,像这样,
2)然后可以为其添加事件,在此提供一种方法
//可以弄出左上角的回退按钮
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
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);
}