android学习笔记——menu控件

来源:互联网 发布:ubantu 安装mysql 编辑:程序博客网 时间:2024/05/29 08:37
开发菜单和子菜单有两种方式;一是在Activity重写的方法onCreateOptionsMenu(Menu menu)方法中调用menu对象添加,然后在重写Activity的onOptionsItemSelected来响应选择的菜单项。二是通过资源文件 来定义菜单项,然后在onCreateOptionsMenu方法中加载这个xml资源。onCreateOptionsMenu方法在单击Menu键时 触发。
这里在资源文件中定义菜单项举例:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"tools:context=".MainActivity">
<itemandroid:id="@+id/action_settings"android:title="@string/action_settings"
android:orderInCategory="100"app:showAsAction="never" />
<item
android:title="连接"
//控制选项的顺序,小上大下
android:orderInCategory="10"
android:id="@+id/connect"
//定义显示的方式,always表示可以直接看到,never表示在...中隐藏,ifRoom表示如果有位置就显示,不然就出现在右边的三个点中
//要注意的一点是下面是app:而不是android:,原因似乎是包的问题,因为我使用的是android.support.v7.app.ActionBarActivity。
app:showAsAction="always">
<menu>
//子菜单需要使用grouo进行包围,在其中可以设置子菜单的选择方式,包括,single单选,all多选,none不可选(就是没有后面的小标记了)
<groupandroid:checkableBehavior="single">
<itemandroid:id="@+id/color_red"
android:title="红"/>
<itemandroid:id="@+id/color_blue"
android:title="蓝"/>
<itemandroid:id="@+id/color_green"
android:title="绿"/>
</group>
</menu>
</menu>
然后在MainActivity中重写onCreateOptionsMenu(Menu menu)方法,将menu文件载入
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}
然后重写onOptionsItemSelected(MenuItem item)方法,设置好这些点击触发事件
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    switch (item.getItemId()){
        case R.id.action_settings:
            Toast.makeText(getApplicationContext(),"设置",Toast.LENGTH_SHORT).show();
            return true;
        case R.id.connect:
            Toast.makeText(getApplicationContext(),"连接",Toast.LENGTH_SHORT).show();
            return true;
     }
     return super.onOptionsItemSelected(item);
}
使用代码的方式进行菜单的添加
重写onCreateOptionsMenu(Menu menu)方法
public boolean onCreateOptionsMenu(Menu menu) {
   menu.add(0,1,Menu.NONE,"蓝牙发送").setIcon(android.R.drawable.ic_menu_send);
   //添加子菜单
   SubMenu subMenu = menu.addSubMenu(0,2,Menu.NONE,"重要程度").setIcon(android.R.drawable.ic_menu_share);
   subMenu.add(2,201,1,"string");
  return true;
}


上下文菜单(就是长按有效)ContextMenu
先写一下onCreate()中的代码
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //显示列表
    simpleShowList();
    //为所有列表项注册上下文菜单
    this.registerForContextMenu(getListView());
}
然后我们需要在simpleShowList()中使用适配器adapter将数据与样式进行绑定并设置。
//数据适配器 simple array adapter
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,files);
//填充列表
this.setListAdapter(adapter);
之后需要将onCreateContextMenu()与onContextItemSelected()两个方法重写。
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
    menu.setHeaderTitle("文件操作");
    menu.add(01, Menu.NONE"蓝牙发送");
    menu.add(02, Menu.NONE"标记重要");
    menu.add(03, Menu.NONE"重命名");
    menu.add(0,4,Menu.NONE,"删除");
}
onContextItemSelected()方法就不在这里写出了,大概都是一致的。
0 0
原创粉丝点击