精华内容
下载资源
问答
  • Option Menu

    千次阅读 2013-10-02 11:20:43
    Menu由两种形式,Option menu和Context menu。前者是按下设备的Menu硬按钮弹出,后者是长按widget弹出。 1.Option Menu 当我们按下Menu的硬件按钮时,Option Menu将被触发显示,最多可以显示6个选项的icon菜单...

    Menu由两种形式,Option menu和Context menu。前者是按下设备的Menu硬按钮弹出,后者是长按widget弹出。

    1.Option Menu

    当我们按下Menu的硬件按钮时,Option Menu将被触发显示,最多可以显示6个选项的icon菜单,如果选项多于6个,第6个选项显示为“More“,点击可以进入扩展菜单。

    在这个例子中,我们给出一个有7个选项(多余最多显示6个item)的例子,可以设置List中item之间分割线的粗细。

    步骤1:创建Menu

    1.1 设置Menu各个item的ID

    private static final int EIGHT_ID          = Menu.FIRST +1;
        private static final int SIXTEEN_ID        = Menu.FIRST+2;
        private static final int TWENTY_FOUR_ID    = Menu.FIRST+3;
        private static final int TWO_ID            = Menu.FIRST+4;
        private static final int THIRTY_TWO_ID     = Menu.FIRST+5;
        private static final int FORTY_ID          = Menu.FIRST+6;
        private static final int ONE_ID            = Menu.FIRST+7;

    (其中Menu.FIRST在reference中描述为:First value for group and item identifier integers.我们可以理解为ID设置的最小数值。)

    1.2 创建Menu

    在用户第一次按下Menu键的使用,将触发onCreateOptionsMenu(),我们将在此创建我们的菜单

    public boolean onCreateOptionsMenu(Menu menu) {
            /*第一个参数是groupId,如果不需要可以设置为Menu.NONE。将若干个menu item都设置在同一个Group中,可以使用setGroupVisible(),setGroupEnabled(),setGroupC        heckable()这样的方法,而不需要对每个item都进行setVisible(), setEnable(), setCheckable()这样的处理,这样对我们进行统一的管理比较方便
           * 第二个参数就是item的ID,我们可以通过menu.findItem(id)来获取具体的item 
           * 第三个参数是item的顺序,一般可采用Menu.NONE,具体看本文最后MenuInflater的部分
           * 第四个参数是显示的内容,可以是String,或者是引用Strings.xml的ID*/
            menu.add(Menu.NONE, ONE_ID,Menu.NONE,"1 Pixel");
            menu.add(Menu.NONE, TWO_ID, Menu.NONE, "2 Pixels");
            menu.add(Menu.NONE, EIGHT_ID, Menu.NONE, "8 Pixels");
            menu.add(Menu.NONE, SIXTEEN_ID, Menu.NONE, "16 Pixels");
            menu.add(Menu.NONE, TWENTY_FOUR_ID, Menu.NONE, "24 Pixels");
            menu.add(Menu.NONE, THIRTY_TWO_ID, Menu.NONE, "32 Pixels");
            menu.add(Menu.NONE, FORTY_ID, Menu.NONE, "40 Pixels");
            return super.onCreateOptionsMenu(menu);
        }
    如果我们需要增加图标,也很简单,如下:

    MenuItem item1 = menu.add(Menu.NONE,ONE_ID,Menu.NONE,"1 Pixel");
      item1.setIcon(R.drawable.android_normal);//每个Item都有各种函数,如设置图标,可以动态修改

    运行,按Menu键,可以获得我们的Menu,如下图,第一个图是显示效果,第二个图是按了菜单中的More后显示的效果,第三个图我们在上面的基础上,再增加三个item,按More后的显示效果。


    步骤2:Menu触发

    Menu触发比较简单,Activity在Memu后会触发onOptionsItemSelected()进行处理。如下:

    public boolean onOptionsItemSelected(MenuItem item) {
            ... ... 加入我们的处理 ... ...
            return super.onOptionsItemSelected(item);
        }

    在这个例子我们加入的处理如下:

     switch (item.getItemId()) { //获取Id
                  case ONE_ID:
                    getListView().setDividerHeight(1);
                    break;
                  case EIGHT_ID:
                    getListView().setDividerHeight(8);
                    break;
                  ... 类同,设置分割线的粗细,略去...  
                  default:
                    break;
                }

    2.Context Menu

    Context Menu是用户手指长按某个View触发的菜单。处理如下:

    步骤1:为某个view注册ContextMenu

    例如在我们的例子中,在onCreate()中对整个ListView进行处理:

    registerForContextMenu(getListView());
    步骤2:创建ContextMenu
    通过Override  onCreateContextMenu()来创建Context Menu。如果我们为多个View都注册了ContextView,那么我们可以通过第二个参数View v来判断需要创建怎样的菜单。第三个参数ContextMenuInfo和具体的View的特性有关,如果是list,它是List这中的item,这样我们可以根据这个item的当前状态,例如是否checked来处理menu。

    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
            ... 设置Menu的处理,和Option Menu一样 ....,同样的支持子菜单
            super.onCreateContextMenu(menu, v, menuInfo);
        }

    我们每一次常按widget,都会触发onCreateContextMenu()的处理,这和Option Menu不一样。每次处理完,ContextMenu都会discard,因此我们不要保留里面的menu以及menu item对象用于其他的处理
    步骤3:点击菜单触发函数

    触发onContextItemSelected()。这里么只有一个MenuItem,因此在程序中,每个MenuItem的ID应该是唯一的,如果我们需要获取MenuInfo,可以用item.getMenuInfo()来获得。

    public boolean onContextItemSelected(MenuItem item) {
            ...  我们的处理内容... 
            return super.onContextItemSelected(item);
        }

    3.通过XML来定义Menu
    我们利用可以 LayoutInflater infalter = getLayoutInflater();从XML文件中获取Layout的样式,那么 在onCreateOptionsMenu()中的处理方法是:

    public boolean onCreateOptionsMenu(Menu menu) {
            MenuInflater menuInflater = new MenuInflater(getApplication());
            menuInflater.inflate(R.menu.chapter11_menu, menu);
            return super.onCreateOptionsMenu(menu);
        }

    其中我们在res/menu目录下面创建Menu的xml文件 chapter11_menu.xml。我们通过下面的例子看看Menu XML文件如何编写:

    <?xml version="1.0" encoding="utf-8"?>
    <!-- Menu对应一个Menu的格式 -->
    <menu  xmlns:android="http://schemas.android.com/apk/res/android">
         <!-- 我们分三种情况进行设置 -->
         <!-- Part 1 :普通情况,我们增加三个MenuItem,item对应MenuItem的格式。item中的android:id直接就是item的ID,即我们menu.add()中的第二个参数。 -->
        <item android:id="@+id/c11_close"
         <!-- title为显示的文字,即menu.add()中的第三个参数的第四个参数,可采用@string/xxx -->
          android:title="Close"
         <!-- orderInCategory表明摆放的顺序,不一定从0还是计算,但必须大于等于0,数值小的位于前,如果数值一样,在我们这个例子中3又两个值,则安顺序摆放,此相当于menu.add()中的第三个参数order。当然我们建议从0,1,2,3....这样依次给出,并且与XML行文的顺序一致。 -->
          android:orderInCategory = "3"
         <!-- icon设置图标,不言自喻 -->
          android:icon="@drawable/android_focused" />
         <item android:id="@+id/c11_no_icon"
           android:orderInCategory = "2"
           android:title = "Sans Icon" />
         <item android:id="@+id/c11_disabled"
           android:orderInCategory="4"
           android:enabled="false"
           android:title="Disabled" />
         <!-- Part 2 :Group的情况,我们在Group中放入2个item,如果我们要显示3.4的方式,可以增加group的参数android:checkableBehavior来设置,single表示radio box,all表示checkbox,none表示checkable=flase。group中的android:id就是Gourp_ID,即menu.add()中的第一个参数。在这个例子中,我们设置这个group不可视,如果需要显示,代码为:menu.setGroupVisible(R.id.c11_other_stuff, true);-->
          <group android:id="@+id/c11_other_stuff"
           <!-- Item由android:orderInCategory来设置item的顺序,在Group中我们可以通过menuCategory来设置另一个category,里面的顺序和default Category是不方在一起比较,例如这里么我们给出0和5,如图所示,在显示完default Category,再显示这个sendonary的内容。 -->
            android:menuCategory="secondary"
            android:checkableBehavior="single"
            android:visible="false" >
               <item android:id="@+id/c11_later"
                 android:orderInCategory="0"
                 android:title="2nd-To-Last" />
               <item android:id="@+id/last"
                  android:orderInCategory="5"
                 android:title="Last" />
         </group>
         <!-- Part 3 :子menu的设置,将在menuItem内部嵌套一个<Menu>,在这个例子中的子菜单,试验了快捷键的方式 -->
         <item android:id="@+id/c11_submenu"
           android:orderInCategory="3"
           android:title="A submenu" >
               <menu>
                   <item android:id="@+id/c11_non_ghost"
                     android:title="Non-Ghost"
                     android:visible="true"
                     android:alphabeticShortcut="n" /> 
                   <item android:id="@+id/c11_ghost"
                     android:title="Ghost"
                     android:visible="true"
                     android:alphabeticShortcut="g" />
               </menu>
          </item> <!-- end of Part 3 -->
    </menu>




    展开全文
  • Option menu

    2010-07-03 14:26:11
    看到网上有人提问, 顺便整了一个小程序,测试ok
  • Menu由两种形式,Option menu和Context menu。前者是按下设备的Menu硬按钮弹出,后者是长按widget弹出。 1、Option Menu:当我们按下Menu的硬件按钮时,Option Menu将被触发显示,最多可以显示6个选项的icon...

           Menu由两种形式,Option menu和Context menu。前者是按下设备的Menu硬按钮弹出,后者是长按widget弹出。

    1、Option Menu:当我们按下Menu的硬件按钮时,Option Menu将被触发显示,最多可以显示6个选项的icon菜单,

    如果选项多于6个,第6个选项显示为“More“,点击可以进入扩展菜单。

    步骤1:创建Menu

    步骤2:Menu触发比较简单,Activity在Memu后会触发onOptionsItemSelected()进行处理。               

    步骤3:每次显示menu时根据实际的情况进行适配

    步骤4:子菜单,Android支持二级菜单,但是不支持三级等多级菜单。子菜单设置如下,在onCreateOptionsMenu(),

    2、Context Menu:Context Menu是用户手指长按某个View触发的菜单。

    步骤1:为某个view注册ContextMenu,例如在我们的例子中,在onCreate()中对整个ListView进行处理:

    步骤2:创建ContextMenu,通过Override onCreateContextMenu()来创建Context Menu。

    步骤3:点击菜单触发函数,触发onContextItemSelected()。


    代码片段:

    package com.itarchy.menu;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    /**
     * 
     * @author:itarchy
     * @E-mail:itarchy@163.com
     * @data:2015-11-19上午10:26:37
     * @version:
     * @Des:
     */
    public class HomeActivity extends Activity {
    
    	private Button btn_op;
    	private Button btn_Ct;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
    
    		btn_op = (Button) this.findViewById(R.id.btn_op);
    		btn_op.setOnClickListener(new OnClickListener() {
    
    			@Override
    			public void onClick(View v) {
    				startActivity(new Intent(HomeActivity.this,
    						OptionMenuActivity.class));
    
    			}
    		});
    		btn_Ct = (Button) this.findViewById(R.id.btn_ct);
    		btn_Ct.setOnClickListener(new OnClickListener() {
    
    			@Override
    			public void onClick(View v) {
    				startActivity(new Intent(HomeActivity.this,
    						ContextMenuActivity.class));
    
    			}
    		});
    
    	}
    }
    
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".OptionMenuActivity" >
    
        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:text="菜单"
            android:textSize="30sp" />
    
        <Button
            android:id="@+id/btn_op"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/title"
            android:text="选项菜单和子菜单"
            android:textSize="20sp" />
    
        <Button
            android:id="@+id/btn_ct"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/btn_op"
            android:text="上下文菜单"
            android:textSize="20sp" />
    
    </RelativeLayout>
    package com.itarchy.menu;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.SubMenu;
    import android.widget.Toast;
    
    public class OptionMenuActivity extends Activity {
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.op_main);
    	}
    
    	// 创建选菜单
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu) {
    		// 1、方式一、通过一个MenuInflater把在XML布局文件中定义好的菜单样式应用在菜单上
    		/* getMenuInflater().inflate(R.menu.main, menu); */
    		// 2、方式二:
    		// 直接在Java代码中使用add()方法逐个添加菜单项
    		menu.add(Menu.NONE, 0, Menu.NONE, "设置").setIcon(R.drawable.qq);
    		menu.add(Menu.NONE, 1, Menu.NONE, "添加").setIcon(R.drawable.qq_kong);
    		// 给第三项添加子菜单
    		SubMenu subMenu = menu.addSubMenu(Menu.NONE, 2, Menu.NONE, "子菜单1")
    				.setIcon(R.drawable.qq);
    		subMenu.setHeaderIcon(R.drawable.qq_kong);
    		subMenu.setHeaderTitle("子菜单标题");
    		subMenu.add(Menu.NONE, 112, Menu.NONE, "子菜单1");
    		subMenu.add(Menu.NONE, 113, Menu.NONE, "子菜单2");
    		subMenu.add(Menu.NONE, 114, Menu.NONE, "子菜单3");
    		subMenu.add(Menu.NONE, 115, Menu.NONE, "子菜单4");
    
    		menu.add(Menu.NONE, 3, Menu.NONE, "图库").setIcon(R.drawable.qq);
    		menu.add(Menu.NONE, 4, Menu.NONE, "相机").setIcon(R.drawable.qq_kong);
    		menu.add(Menu.NONE, 5, Menu.NONE, "音乐").setIcon(R.drawable.qq);
    		menu.add(Menu.NONE, 6, Menu.NONE, "蓝牙").setIcon(R.drawable.qq_kong);
    		menu.add(Menu.NONE, 7, Menu.NONE, "个人中心");
    		return true;
    	}
    
    	// 点击菜单的items时执行
    	@Override
    	public boolean onOptionsItemSelected(MenuItem item) {
    
    		Toast.makeText(getApplication(),
    				item.getTitle() + "," + (item.getItemId() + ""), 100).show();
    		switch (item.getItemId()) {
    		case 0:
    			// 处理"设置"
    			break;
    		case 1:
    			// 处理"添加"
    			break;
    		}
    		return super.onOptionsItemSelected(item);
    	}
    
    }
    
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".OptionMenuActivity" >
    
        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:textSize="30sp"
            android:text="选项菜单和子菜单" />
    
    </RelativeLayout>
    
    package com.itarchy.menu;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.ContextMenu;
    import android.view.ContextMenu.ContextMenuInfo;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.SubMenu;
    import android.view.View;
    import android.widget.TextView;
    import android.widget.Toast;
    
    public class ContextMenuActivity extends Activity {
    
    	private TextView tvMenu;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.ct_main);
    
    		tvMenu = (TextView) this.findViewById(R.id.title);
    		this.registerForContextMenu(tvMenu);
    
    	}
    
    	// 创建上下文菜单
    	@Override
    	public void onCreateContextMenu(ContextMenu menu, View v,
    			ContextMenuInfo menuInfo) {
    
    		menu.add(Menu.NONE, 0, Menu.NONE, "设置").setIcon(R.drawable.qq);
    		menu.add(Menu.NONE, 1, Menu.NONE, "添加").setIcon(R.drawable.qq_kong);
    
    		// 给第三项添加子菜单
    		SubMenu subMenu = menu.addSubMenu(Menu.NONE, 2, Menu.NONE, "子菜单1")
    				.setIcon(R.drawable.qq);
    		subMenu.setHeaderIcon(R.drawable.qq_kong);
    		subMenu.setHeaderTitle("子菜单标题");
    		subMenu.add(Menu.NONE, 112, Menu.NONE, "子菜单1");
    		subMenu.add(Menu.NONE, 113, Menu.NONE, "子菜单2");
    		subMenu.add(Menu.NONE, 114, Menu.NONE, "子菜单3");
    		subMenu.add(Menu.NONE, 115, Menu.NONE, "子菜单4");
    
    		menu.add(Menu.NONE, 3, Menu.NONE, "图库").setIcon(R.drawable.qq);
    		menu.add(Menu.NONE, 4, Menu.NONE, "相机").setIcon(R.drawable.qq_kong);
    		menu.add(Menu.NONE, 5, Menu.NONE, "音乐").setIcon(R.drawable.qq);
    		menu.add(Menu.NONE, 6, Menu.NONE, "蓝牙").setIcon(R.drawable.qq_kong);
    		menu.add(Menu.NONE, 7, Menu.NONE, "个人中心");
    
    		super.onCreateContextMenu(menu, v, menuInfo);
    	}
    
    	@Override
    	public boolean onContextItemSelected(MenuItem item) {
    		// TODO Auto-generated method stub
    		Toast.makeText(getApplication(),
    				item.getTitle() + "," + (item.getItemId() + ""), 100).show();
    		switch (item.getItemId()) {
    		case 0:
    			// 处理"设置"
    			break;
    		case 1:
    			// 处理"添加"
    			break;
    		}
    		return super.onContextItemSelected(item);
    	}
    }
    
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".OptionMenuActivity" >
    
        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:textSize="30sp"
            android:text="上下文菜单" />
    
    </RelativeLayout>
    
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.itarchy.menu"
        android:versionCode="1"
        android:versionName="1.0" >
    
        <uses-sdk
            android:minSdkVersion="8"
            android:targetSdkVersion="18" />
    
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name="com.itarchy.menu.HomeActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <activity android:name="com.itarchy.menu.OptionMenuActivity" />
            <activity android:name="com.itarchy.menu.ContextMenuActivity" />
        </application>
    
    </manifest>









    展开全文
  • OPTION Menu菜单

    2014-01-23 14:57:38
    Menu菜单在android系统控件中真的很具有特色 点击以后会悬浮出一个菜单在次点击菜单则会消失,今天我只是简单的介绍一下系统的Menu菜单, 其实Menu菜单可以做出非常好看的效果,比如半透明 自定义按钮图片等等,后面...
    Menu菜单在android系统控件中真的很具有特色 点击以后会悬浮出一个菜单在次点击菜单则会消失,今天我只是简单的介绍一下系统的Menu菜单, 其实Menu菜单可以做出非常好看的效果,比如半透明 自定义按钮图片等等,后面我会详细的介绍menu菜单。
     

     

      
    1. public class MenuActivity extends Activity {  
    2.  
    3.     @Override  
    4.     protected void onCreate(Bundle savedInstanceState) {  
    5.     setContentView(R.layout.menuview);  
    6.     super.onCreate(savedInstanceState);  
    7.     }  
    8.  
    9.     @Override  
    10.     public boolean onCreateOptionsMenu(Menu menu) {  
    11.     menu.add(0, 0, Menu.NONE, "菜单1").setIcon(R.drawable.icon);  
    12.     menu.add(0, 1, Menu.NONE, "菜单2").setIcon(R.drawable.icon);  
    13.     menu.add(0, 2, Menu.NONE, "菜单3").setIcon(R.drawable.icon);  
    14.     menu.add(0, 3, Menu.NONE, "菜单4").setIcon(R.drawable.icon);  
    15.     menu.add(0, 4, Menu.NONE, "菜单5").setIcon(R.drawable.icon);  
    16.     menu.add(0, 5, Menu.NONE, "菜单6").setIcon(R.drawable.icon);  
    17.     return super.onCreateOptionsMenu(menu);  
    18.     }  
    19.  
    20.     @Override  
    21.     public boolean onOptionsItemSelected(MenuItem item) {  
    22. if(item.isChecked())  item.setChecked(false); else { item.setChecked(true); }
    23.      Dialog(item.getItemId());  
    24.      return super.onOptionsItemSelected(item);  
    25.     }  
    26.  
    27.     private void Dialog(int message) {  
    28.     new AlertDialog.Builder(this).setMessage(  
    29.         "您单击第【" + message + "】项Menu菜单项.").show();  
    30.     }  
      
    1. <?xml version="1.0" encoding="utf-8"?> 
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    3.     android:orientation="vertical" android:layout_width="fill_parent" 
    4.     android:layout_height="fill_parent"> 
    5.     <TextView android:layout_width="fill_parent" 
    6.               android:layout_height="wrap_content"   
    7.               android:textColor="#000000" 
    8.               android:textSize="18dip" 
    9.               android:background="#00FF00" 
    10.               android:text="Menu菜单测试"   
    11.               android:gravity="center_vertical|center_horizontal" 
    12.               /> 
    13. </LinearLayout> 

    一个菜单组使用一个整数定义(在xml的一个资源id)。一个菜单项可以在它加入菜单时被加入菜单组。使用接受groupID的add()方法来完成这一点。

      你可以使用setGroupVisible()来显示和隐藏整个菜单组;使用setGroupEnabled()来使菜单组可用和不可用;使用setGroupCheckable()来使菜单组可以或者不可选择。

      Checkable menu items 可选取菜单

      任何菜单项可以被用作选项开关。可以使用单选框和复选框来完成,如下图。


      注意:图标菜单中的菜单项不能显示复选框或者单选框。如果你希望把这些图标菜单设为可选择的,你必须自己使用颜色或者图标变化等方式来保证它们在选定和不选定状态下的可区分性。

      要使一个菜单项变为可选择的,使用setCheckable()方法:

      menu.add(0, VIBRATE_SETTING_ID, 0, "Vibrate")

      .setCheckable(true);

      这将显示一个复选框。当这个菜单项被选择时,onOptionsItemSelected()被调用。你可以使用isChecked()和setChecked()来查看和设置它的选择状态。这里是onOptionsItemSelected()的内容:

      switch (item.getItemId()) {

      case VIBRATE_SETTING_ID:

      if (item.isChecked()) item.setChecked(false);

      else item.setChecked(true);

      return true;

      ...

      }

      要创建一组单选框,将同样的组id分配给每个菜单项,并调用setGroupCheckable()。这种情况下,你不需要为每个菜单项调用setCheckable(),因为菜单组整个被设置为可选择。下面为在子菜单中设置两个互斥选项的方法:

      SubMenu subMenu = menu.addSubMenu("Color");

      subMenu.add(COLOR_MENU_GROUP, COLOR_RED_ID, 0, "Red");

      subMenu.add(COLOR_MENU_GROUP, COLOR_BLUE_ID, 0, "Blue");

      subMenu.setGroupCheckable(COLOR_MENU_GROUP, true, true);

      setGroupCheckable()方法中, 第一个参数为我们需要设置的组id. 第二个参数为我们是否需要该组的菜单项为可选择. 第三个参数为各个选项之间是否互斥. 当设为互斥时, 选择一个选项将导致另外的选项被取消.

    展开全文
  • Option Menu 选项菜单

    2013-12-04 09:46:44
    菜单分为三种——选项菜单(Option Menu)、上下文菜单(Context Menu)、子菜单(Sub Menu)一、选项菜单(Option Menu),用户点击Menu按钮1、覆盖Activity的onCreateOptionsMenu(Menu menu)方法,当第一次打开该方法的...

    菜单分为三种——选项菜单(Option Menu)、上下文菜单(Context Menu)、子菜单(Sub Menu)
    一、选项菜单(Option Menu),用户点击Menu按钮
    1、覆盖Activity的onCreateOptionsMenu(Menu menu)方法,当第一次打开该方法的时候被自动调用
    2、调用Menu的add()方法添加菜单,可以调用MenuItem的SetIcon()方法来为菜单设置图标

    //当菜单超过六个以上的就会显示more标记——选项菜单(Option Menu)
    //覆盖了Activity的方法,当用户第一次打开菜单时该方法会被自动调用,
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    	//添加子菜单,第一个参数是分组、第二个参数是item值、第三个是排序、第四个参数显示内容
    	menu.add(0, 0, 0, "开始1");
    	menu.add(0, 1, 1, "帮助1");
    	menu.add(0, 2, 2, "开始1");
    	return true;
    }

     

    3、当菜单选项(Menuitem)被选择的时候,覆盖Activity的onOptionsItemSeleced()方法来响应事件

    //覆盖Activity的方法,当用户点击菜单选项的时候就会调用下面的方法
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    	System.out.println(item.getItemId());
    	switch(item.getItemId()){
    		case 0:
    			createAtherAlertDialog();
    			Toast.makeText(getApplicationContext(), "case 1", Toast.LENGTH_SHORT).show();break;
    		case 1:
    			Toast.makeText(getApplicationContext(), "case 2", Toast.LENGTH_SHORT).show();break;
    		case 2:
    			Toast.makeText(getApplicationContext(), "case 3", Toast.LENGTH_SHORT).show();break;
    	}
    	return true;
    }

     

    展开全文
  • Boot Option Menu

    千次阅读 2018-04-23 19:49:00
    SATA HDD:TOSHIBA MQ02ABF100 1000G SATA HDD:SAMSUNG MZVLW512HMJP-000L2 => Invalid Partition Table Windows启动 500G 128GSSD 可以修改为Linux系统16.04版 USB HDD:SanDisk Windows Bo...
  • option menu和onTouchEvent

    2013-03-16 22:35:31
    本人使用魅族MX2 今天下午调了一个下午的bug 由于未知原因option menu 嵌套进Tab layout 无法显示menu键 其实在原生安卓上是正常的 而option menu单独使用 不嵌套进Tab layout也是正常的  代码延续上一篇的 ...
  • 一、选项菜单(Option Menu) Tips: 选项菜单出现在标题栏右侧,如果设置了无标题栏那就看不见了 效果图: 具体实现步骤 Tips:菜单项可以提前写好引用,也可以动态生成,下面步骤包含两种实现方式 1.在res→...
  • 1. 菜单分为option menu 和 context menu (右键菜单)
  • 一,android 通过 button 弹出 option menu: public class TestOptionsMenu extends Activity implements OnClickListener{ /** Called when
  • Android 选项菜单 Option Menu

    千次阅读 2011-08-08 22:16:53
    import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem;...import android.widget.Toast;...public class OptionsMenu extends Activity {
  • mi.inflate(R.menu.option_menu, menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); switch (id) ...
  • AndroidStudio之option menu菜单的使用

    千次阅读 2018-07-09 09:14:52
    option menu:选项菜单 context menu: 上下文菜单 popup menu:弹出菜单 option menu 首先,好多人在使用选项菜单的过程中发现真机上并没有虚拟机上面的显示的三个点,无法使用菜单,这并不是菜单的问题。...
  • Pycharm context menu disable RUN option

    千次阅读 2014-11-21 09:05:14
    这个问题非常坑,正常来说一个文件右键出来的是 Run 选项, 但是最近几个文件都是 Unititest 的测试选项,每次要运行的时候都要手工去配置Run Option,在尝试了: 0、 重置IDE配置 1、 重装IDE 2、 重建Project 3、 ...
  • 选项菜单(option Menu)

    千次阅读 2016-03-01 21:49:55
    public boolean onCreateOptionsMenu(Menu menu){ menu.add(0,MENU_DOWNLOAD,0,"下载设置") .setIcon(R.drawable.download) .setShortcut(1,'d'); menu.add(0,MENU_UPLOAD,1,"上传设置"); } 具体介绍下方法...
  • public class MainActivity extends Activity { ... private static final int ITEM1 = Menu.FIRST; private static final int ITEM2 = Menu.FIRST+1; public void onCreate(Bundle savedInstanceState) {...
  • 【android】在fragment中使用option menu

    千次阅读 2014-07-01 16:24:36
    public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); if (!mScanning) { menu.findItem(R.id.menu_stop).setVisible(false); menu.findItem(R.id.menu_scan...
  • 我发现我在学习每一个Android界面控件的时候花的时间都比较多,因为是初学,可能学习方法和方式还有待改进。...选项菜单即按下手机硬按键MENU键弹出的底部菜单,最多同时显示6个小项目,更多将显示为MORE..点击到子菜单

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 55,752
精华内容 22,300
关键字:

menuoption