Android用onCreateOptionsMenu()创建optinosMenu

mac2022-06-30  83

Android一共有三种形式的菜单:             1.选项菜单(optinosMenu)             2.上下文菜单(ContextMenu)             3.子菜单(subMenu)

其中最常用的就是选项菜单(optionsMenu), 该菜单在点击 menu 按键 后会在对应的Activity底部显示出来。

主要方法:

1.public boolean onCreateOptionsMenu(Menu menu) 初始化菜单,返回true则显示该menu,false 则不显示。

(只会在第一次初始化菜单时调用)  2.public boolean onPrepareOptionsMenu(Menu menu) 菜单被显示前调用,返回true则显示该menu,false 则不显示。

 (可以通过此方法动态的改变菜单的状态,比如加载不同的菜单等) 3.public void onOptionsMenuClosed(Menu menu) 每次菜单被关闭时调用。(菜单被关闭有三种情形,menu按钮被再次点击、back按钮被点击或者用户选择了某一个菜单项)                4.public boolean onOptionsItemSelected(MenuItem item) 菜单项被点击时调用

添加菜单:

可以在onCreateOptionsMenu()或者onPrepareOptionsMenu()方法中来添加菜单

代码添加:

menu.add((int groupId, int itemId, int order, charsequence title) .setIcon(drawable ID) 四个参数,依次是: 1、组别,如果不分组的话就写Menu.NONE,  2、Id,用于确定不同的菜单  3、顺序,哪个菜单项在前面由这个参数的大小决定  4、文本,菜单项的显示文本 add()方法返回的是MenuItem对象,调用其setIcon()方法,为相应MenuItem设置Icon

public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); menu.add(Menu.NONE, Menu.First+1, 0, "设置").setIcon(R.drawable.setting); return true; }

布局文件添加:

res/menu/main.xml: <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/add_item" android:title="Add" /> <item android:id="@+id/remove_item" android:title="Remove" /> <item android:id="@+id/finish_item" android:title="Finish" /> </menu> MainActivity.java: public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } // 用于初始化菜单,menu参数就是将显示的Menu实例 // 只会在第一次初始化菜单时调用 @Override public boolean onCreateOptionsMenu(Menu menu) { // getMenuInfalter() 方法获取 MenuInflater对象 // 再调用inflate()方法创建菜单 getMenuInflater().inflate(R.menu.main, menu); // return true则显示菜单,false则不显示 return true; } // 定义菜单响应事件,菜单项被点击时调用 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { // 判断点击的菜单项 case R.id.add_item: Toast.makeText(this, "点击了Add菜单", Toast.LENGTH_SHORT).show(); break; case R.id.remove_item: Toast.makeText(this, "点击了Remove菜单", Toast.LENGTH_SHORT).show(); break; case R.id.finish_item: finish(); default: } return true; } }

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/kinglearnjava/p/4883264.html

最新回复(0)