不良丶青年

OptionsMenu(选项菜单)

1.重写Activity的onCreateOptionsMenu(Menu menu)方法,在该方法里调用Menu对象的方法来添加菜单项或子菜单。

2.如果希望应用程序能响应菜单项的单击事件,重写Activity中的onOptionsItemSelected(MenuItem item)方法即可。

MainActivity.java

public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}//Options菜单@Overridepublic boolean onCreateOptionsMenu(Menu menu) {//通过Activity得到填充Menu的填充器getMenuInflater().inflate(R.menu.main, menu);/**给Option添加item* 参数1:分组的ID* 参数2:该item的ID* 参数3:添加顺序,从0开始* 参数4:item显示的文本*/menu.add(Menu.NONE, 1, 0, "0");menu.add(Menu.NONE, 2, 2, "2");menu.add(Menu.NONE, 4, 5, "5");SubMenu subMenu = menu.addSubMenu("我还能点");subMenu.add(Menu.NONE, 3, 6, "我是一个子选项");//返回true显示菜单,返回false隐藏菜单return true;}//给Option添加事件监听@Overridepublic boolean onOptionsItemSelected(MenuItem item) {//按下menu键触发该方法switch (item.getItemId()) {case R.id.d:Toast.makeText(this, "d", 0).show();break;case R.id.dmxy:Toast.makeText(this, "dmxy", 0).show();break;case R.id.dom:Toast.makeText(this, "dom", 0).show();break;case 2:Toast.makeText(this, "2", 0).show();break;default:break;}return super.onOptionsItemSelected(item);}}main.xml

<menu xmlns:android=""xmlns:tools=""tools:context="com.example.menudemo.MainActivity" ><itemandroid:id="@+id/action_settings"android:orderInCategory="100"android:showAsAction="never"android:title="@string/action_settings"/><itemandroid:id="@+id/dmxy"android:title="德玛西亚1"/><itemandroid:id="@+id/dom"android:title="德玛西亚2"/><itemandroid:id="@+id/d"android:title="0xml"android:orderInCategory="0"/></menu>根节点必须为menu才能够正确的解析。上述可以看出来,order是指添加完事,放在哪个位置的一个排序:不写默认是第一个(两个都不写按照XML先后顺序),XML和Java代码中顺序相同则先加载XML的。其余的按照升序排序。

效果图:

ContextMenu(上下文菜单)

1.重写Activity的onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)方法

2.调用Activity的registerForContextMenu(View view)方法给view组件注册上下文菜单。

3.如果系统事件能为菜单项提供响应,可以重写onContextItemSelected(MenuItem item)方法,或为指定菜单项绑定事件监听器。

MainActivity.java

public class MainActivity extends Activity {private Button b;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);b = (Button) findViewById(R.id.btn);registerForContextMenu(b);}@Overridepublic void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {menu.add(Menu.NONE, 1, 1, "红色");menu.add(Menu.NONE, 2, 2, "蓝色");menu.add(Menu.NONE, 3, 3, "绿色");menu.add(Menu.NONE, 4, 4, "紫色");//给这四个菜单项设置为单选的menu.setGroupCheckable(0, true, true);//设置上下文的标题和图标menu.setHeaderIcon(R.drawable.ic_launcher);menu.setHeaderTitle("选择背景色");super.onCreateContextMenu(menu, v, menuInfo);}@Overridepublic boolean onContextItemSelected(MenuItem item) {// TODO Auto-generated method stubreturn super.onContextItemSelected(item);}}上下文菜单需要长按才能够触发。

效果图:

PoputMenu弹出菜单

1.调用newPopupMenu(Context context, View anchor)创建下拉菜单,,android代表要激活该组件弹出菜单的组件。

2.调用PopupMenu的inflate()方法显示弹出式菜单

3.调用PopupMenu的show()方法显示弹出式菜单

MainActivity.java

public class MainActivity extends Activity {private Button b;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);b = (Button) findViewById(R.id.btn);}public void btn(View view) {// 创建PopupMenu对象PopupMenu menu = new PopupMenu(this, b);// 将菜单的XML资源文件加载到popup菜单中getMenuInflater().inflate(R.menu.popup_menu, menu.getMenu());// 添加事件监听menu.setOnMenuItemClickListener(new OnMenuItemClickListener() {@Overridepublic boolean onMenuItemClick(MenuItem item) {switch (item.getItemId()) {case R.id.add:Toast.makeText(MainActivity.this, "添加", 0).show();break;case R.id.del:Toast.makeText(MainActivity.this, "删除", 0).show();break;}return false;}});menu.show();}}popup_menu.xml

觉得自己做的到和不做的到,其实只在一念之间

不良丶青年

相关文章:

你感兴趣的文章:

标签云: