1 菜单资源文件
菜单资源文件在res/menu目录下,根元素使用<menu></menu>标记,在该标记中可以包含多个<item></item>标记,用于定义菜单项。
<item>标记的常用属性如表1:
属性 | 描述 |
android:id | 设置ID |
android:title | 设置标题 |
android:alphabeticShortcut | 指定字符快捷键 |
android:numericShortcut | 指定数字快捷键 |
android:icon | 指定图标 |
android:enabled | 指定菜单项是否可用 |
android:checkable | 指定菜单项是否可选 |
android:checked | 指定菜单项是否已选中 |
android:visible | 指定菜单项是否可见 |
表1 <item>标记的常用属性
2 使用菜单资源
2.1 选项菜单
用户单击菜单按钮时,弹出的菜单就是选项菜单。
OptionMenu:实现选项菜单
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) {
MenuInflater menuInflater = new MenuInflater(this);
menuInflater.inflate(R.menu.menu, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.settings:
Intent intent = new Intent(MainActivity.this, Settings.class);
startActivity(intent);
break;
case R.id.regard:
Intent intent1 = new Intent(MainActivity.this, Regard.class);
startActivity(intent1);
break;
}
return super.onOptionsItemSelected(item);
}
}
https://github.com/hanyuhang-hz/android-demos
2.2 上下文菜单
用户长按组件时,弹出的菜单就是上下文菜单。
ContextMenu:实现上下文菜单
MainActivity.java
public class MainActivity extends Activity {
TextView introduce;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
introduce = (TextView) findViewById(R.id.introduce);
// 为文本框注册上下文菜单
registerForContextMenu(introduce);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
MenuInflater inflater = new MenuInflater(this);
inflater.inflate(R.menu.introduce_menu, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_copy:
Toast.makeText(MainActivity.this, "已复制", Toast.LENGTH_SHORT).show();
break;
case R.id.menu_collect:
Toast.makeText(MainActivity.this,"已收藏",Toast.LENGTH_SHORT).show();
break;
}
return true;
}
}