Android攻城狮之OptionsMenu
目录
通过布局文件创建菜单项
MainActivity.java
如下
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch (item.getItemId()){
case R.id.action_menu1:
Toast.makeText(MainActivity.this, "点击了菜单一",Toast.LENGTH_LONG).show();
break;
case R.id.action_menu2:
Toast.makeText(MainActivity.this, "点击了菜单二", Toast.LENGTH_LONG).show();
break;
}
return super.onOptionsItemSelected(item);
}
}
同时在res
文件夹下,建立menu
文件夹,用来存放菜单栏,并创建main.xml
布局文件。布局代码如下:
<item
android:id="@+id/action_menu1"
android:orderInCategory="100"
app:showAsAction="never"
android:title="item1" />
<item
android:id="@+id/action_menu2"
android:orderInCategory="100"
app:showAsAction="never"
android:title="item2" />
动态添加菜单项
除了xml布局文件,还可以通过代码进行动态添加
@Override
public boolean onCreateOptionsMenu(Menu menu){
menu.add(1, 100, 1, "菜单一");
menu.add(1, 101, 1, "菜单二");
menu.add(1, 102, 1, "菜单三");
menu.add(1, 103, 1, "菜单四");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch (item.getItemId()){
case 100:
Intent intent = new Intent(MainActivity.this, SecondActivity.class);//设置点击事件——页面跳转
item.setIntent(intent);
break;
case 101:
Toast.makeText(MainActivity.this, "点击了菜单二", Toast.LENGTH_LONG).show();
break;
case 102:
Toast.makeText(MainActivity.this, "点击了菜单三", Toast.LENGTH_LONG).show();
break;
case 103:
Toast.makeText(MainActivity.this, "点击了菜单四", Toast.LENGTH_LONG).show();
break;
}
return super.onOptionsItemSelected(item);
}
除此之外,由于menu.add()
函数返回MenuItem
类型数据,因此可以进一步添加内容
@Override
public boolean onCreateOptionsMenu(Menu menu){
MenuItem menuItem = menu.add(1, 100, 1, "菜单一");
menuItem.setTitle("重命名的菜单一");
menuItem.setIcon(R.drawable.ic_launcher_background);
menu.add(1, 101, 1, "菜单二");
menu.add(1, 102, 1, "菜单三");
menu.add(1, 103, 1, "菜单四");
return true;
}