android菜单的学习之子菜单


android菜单学习之选项菜单---------------------
1、在android的3.0以后可以在item的标签中添加on-click这个。这就是一个单独注册一个事件的监听。但一般情况
   下,不推荐使用这个方式注册点击事件。
2、子菜单中是不能再添加子菜单的,
3、添加子菜单---

<menu xmlns:android="http://schemas.android.com/apk/res/android" 

     xmlns:tools="http://schemas.android.com/tools" 

     tools:context="com.fjx.activity.MainActivity" > 

     <item 

         android:id="@+id/file" 

         android:title="@string/file"> 

         <!-- 这就是一个子菜单 --> 

         <menu> 

             <item  

                 android:id="@+id/create_new" 

                 android:title="@string/create_new"/> 

             <item  

                 android:id="@+id/open" 

                 android:title="@string/open"/> 

         </menu> 

      </item> 

 </menu>



4、二级菜单的点击事件。------
  该菜单是一个选项菜单的点击事件。

public boolean onOptionsItemSelected(MenuItem item) { 

     //二级的菜单的获取的id的方式,并且添加点击事件。 

      //获取子菜单。 

      SubMenu sItem=item.getSubMenu(); 

      //根据子菜单的id来做点击事件。找到子项的id。 

      switch (item.getItemId()) { 

       case R.id.create_new: 

Toast.makeText(MainActivity.this, "----->新建", 1).show(); 

       break; 

       case R.id.open: 

          Toast.makeText(MainActivity.this, "----->打开", 1).show(); 

       break; 

     } 

     return super.onOptionsItemSelected(item); 

 }



5、其实菜单的点击事件做到二级菜单的点击事件就可以了。
6、子菜单的点击事件也是走onOptionsItemSelected()这个方法的。

android菜单学习之上下文菜单。-----------

1、上下文菜单提供了一个动作,影响了一个选项。
2、上下文的菜单使用才ListView和GridView中比较多一点。
3、它可以浮动在activity中。
4、上下文菜单是执行长按事件才会出来的,点击是不会出来的。
5、registerContextMenu()使用该方法去注册上下文菜单。
6、给一个ListView添加一个上下文的菜单--------
  (1)、context.registerContextMenu(ListView);
  (2)、重写onCreateContextMenu()方法。

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { 

     super.onCreateContextMenu(menu, v, menuInfo); 

     getMenuInflater().inflate(R.menu.main, menu);//添加一个菜单的布局。 

  }


 (3)、上下文菜单的点击事件----

@Override 

  public boolean onContextItemSelected(MenuItem item) { 

    return super.onContextItemSelected(item); 

  } 


  @Override 

  public boolean onContextItemSelected(MenuItem item) { 

     AdapterContextMenuInfo info=(AdapterContextMenuInfo) item.getMenuInfo(); 

     int id = item.getItemId(); 

     switch (id) { 

       case R.id.delete: 

String value=adapter.getItem(info.position); 

Toast.makeText(MainActivity.this, "删除"+value+"--"+info.position, 1).show(); 

       break; 

       case R.id.add: 

         Toast.makeText(MainActivity.this, "添加黑名单", 1).show(); 

       break; 

       case R.id.cancel: 

Toast.makeText(MainActivity.this, "取消", 1).show(); 

       break; 

       } 

     return super.onContextItemSelected(item); 

 }



android菜单学习之弹出式菜单-----------------

1、弹出式菜单是一种菜单的模式,他可以显示在某个view的下面,当有空间的时候。如果下面没有空间,就
   显示在view的上面。
2、如何写一个弹出式菜单----
 

main.xml 

     

   <menu xmlns:android="http://schemas.android.com/apk/res/android" 

     xmlns:tools="http://schemas.android.com/tools" 

     tools:context="com.fjx.activity.MainActivity" > 



     <item 

         android:id="@+id/open" 

         android:showAsAction="never" 

         android:title="打开"/> 

     <item 

         android:id="@+id/close" 

         android:showAsAction="never" 

         android:title="关闭"/> 

   </menu>



   activity.java中

public void showPopup(View view){ 

     
PopupMenu popupMenu=new PopupMenu(this, view); 

     
popupMenu.getMenuInflater().inflate(R.menu.main,popupMenu.getMenu()); 

     
popupMenu.show(); 

     }



3、菜单的Group自己看。--------------
4、菜单中可以触发一个动作或意图。
5、可以使用activity去添加一个菜单。

android菜单学习之showasaction属性---------

1、这就是设置菜单的行为的属性---
2、ashowasaction的值---有1)、always,2)、never,3)、ifRoom,4)、等

android菜单的学习之actionMode菜单的模式------

1、上下文菜单中android的3.0以后出现的一种菜单的模式。
2、该模式的使用注意看android的官方的文档---还有结合下面的例子
   步骤:
   1)、 ActionMode.Callback callback=new Callback(),并重写它的方法。
   2)、onCreateActionMode(ActionMode mode, Menu menu) 在这个方法中
         mode.getMenuInflater().inflate(menuRes, menu);加载菜单。
   3)、public boolean onActionItemClicked(ActionMode mode, MenuItem item) {

switch (item.getItemId()) { 

   case R.id.delete: 

                 Toast.makeText(MainActivity.this, "---->delete", 1).show(); 

   break; 

   case R.id.cancel: 

       Toast.makeText(MainActivity.this, "---->cancel", 1).show(); 

   break; 

   case R.id.add: 

       Toast.makeText(MainActivity.this, "---->add", 1).show(); 

  break; 

}


    4)、mode.finish();