• android开发之res下的menu (xml+代码的形式)



    转载请注明出处:http://blog.csdn.net/fth826595345/article/details/9199393




    先来看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>


    1.创建menu xml设置菜单

    1.res/menu目录下定义如下菜单xml文件;

      

     <?xml version="1.0" encoding="utf-8"?>  
    
        <menu xmlns:android="http://schemas.android.com/apk/res/android" >  
    
            <item  
    
                android:id="@+id/close"  
    
                android:icon="@drawable/ic_launcher"  
    
                android:orderInCategory="3"  
    
                android:title="Close"/>  
    
            <item  
    
                android:id="@+id/no_icon"  
    
                android:orderInCategory="2"  
    
                android:title="Sans Icon"/>  
    
            <item  
    
                android:id="@+id/disabled"  
    
                android:enabled="true"  
    
                android:orderInCategory="4"  
    
                android:title="Disabled"/>  
    
            <!-- orderInCategory表示的是item的排序-->  
    
            <group  
    
                android:id="@+id/other_stuff"  
    
                android:menuCategory="secondary"  
    
                android:visible="true" >  
    
                <item  
    
                    android:id="@+id/later"  
    
                    android:orderInCategory="0"  
    
                    android:title="2nd-To-Last"/>  
    
                <item  
    
                    android:id="@+id/last"  
    
                    android:orderInCategory="1"  
    
                    android:title="Last"/>  
    
            </group>  
    
            <!--表示的是二级菜单-->  
    
            <item  
    
                android:id="@+id/submenu"  
    
                android:orderInCategory="3"  
    
                android:title="A Submenu">  
    
                <menu>  
    
                    <item  
    
                        android:id="@+id/non_ghost"  
    
                        android:alphabeticShortcut="n"  
    
                        android:title="Non-Ghost"  
    
                        android:visible="true"/>  
    
                    <item  
    
                        android:id="@+id/ghost"  
    
                        android:alphabeticShortcut="g"  
    
                        android:title="A Ghost"  
    
                        android:visible="true"/>  
    
                </menu>  
    
            </item>  
    
          
    
        </menu>  


          

    2.代码使用

       

    package com.src.hero.org;  
    
          
    
        import android.app.Activity;  
    
        import android.os.Bundle;  
    
        import android.util.Log;  
    
        import android.view.Menu;  
    
        import android.view.MenuInflater;  
    
        import android.view.MenuItem;  
    
          
    
        /**  
    
         * Receiver To Study  
    
         *   
    
         * @author Hero  
    
         *   
    
         */  
    
        public class ReceiverActivity extends Activity {  
    
            /** Called when the activity is first created. */  
    
            private static final String TAG="ReceiverActivity";  
    
          
    
            @Override  
    
            public void onCreate(Bundle savedInstanceState) {  
    
                super.onCreate(savedInstanceState);  
    
                setContentView(R.layout.main);  
    
          
    
            }  
    
          
    
            @Override  
    
            public boolean onCreateOptionsMenu(Menu menu) {  
    
                // TODO Auto-generated method stub  
    
                MenuInflater mflater=new MenuInflater(this);  
    
                mflater.inflate(R.menu.menuitem, menu);  
    
                return super.onCreateOptionsMenu(menu);  
    
    /*或者:
    
    getMenuInflater().inflate(R.menu.menuitem);
    
    return true;   */
    
            }  
    
          
    
            @Override  
    
            public boolean onOptionsItemSelected(MenuItem item) {  
    
                // TODO Auto-generated method stub  
    
                switch(item.getItemId()){  
    
                case R.id.close:  
    
                    Log.v(TAG, "------------close");  
    
                    break;  
    
                case R.id.no_icon:  
    
                    Log.v(TAG, "------------noicon");  
    
                    break;  
    
                case R.id.submenu:  
    
                    Log.v(TAG, "------------submenu");  
    
                    break;  
    
                case R.id.non_ghost:  
    
                    Log.v(TAG, "------------non_ghost");  
    
                    break;  
    
                case R.id.ghost:  
    
                    Log.v(TAG, "------------ghost");  
    
                    break;  
    
                case R.id.disabled:  
    
                    Log.v(TAG, "------------disabled");  
    
                    break;  
    
                case R.id.last:  
    
                    Log.v(TAG, "------------last");  
    
                    break;  
    
                case R.id.later:  
    
                    Log.v(TAG, "------------laster");  
    
                    break;  
    
                default:  
    
                    break;  
    
                }  
    
                return super.onOptionsItemSelected(item);  
    
            }  
    
             
    
         }  


    ----上面方法对应的效果图

    1.通过代码创建设置菜单

    1.直接在Activity中重写父类相应的方法;

    	// 在onCreateOptionsMenu设置菜单内容;
    
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu) {
    
    		// 模拟原生系统音乐播放器歌曲的Menu功能
    
    		// 调用Menu.add方法添加Menu项
    
    		/*
    		 * 
    		 * menu.add(0, 0, 0, "全部播放");
    		 * 
    		 * 
    		 * 
    		 * menu.add(0, 1, 1, "音乐库");
    		 * 
    		 * 
    		 * 
    		 * menu.add(0, 2, 2, "全部随机播放");
    		 */
    
    		menu.add(0, 0, 0, "全部播放").setIcon(android.R.drawable.ic_menu_camera);
    
    		menu.add(0, 1, 1, "音乐库").setIcon(android.R.drawable.ic_menu_help);
    
    		menu.add(0, 2, 2, "全部随机播放").setIcon(android.R.drawable.ic_menu_revert);
    
    		return super.onCreateOptionsMenu(menu);
    
    	}
    
    	// 在onPrepareOptionsMenu中动态改Menu
    
    	@Override
    	public boolean onPrepareOptionsMenu(Menu menu) {
    
    		// TODO Auto-generated method stub
    
    		/*
    		 * 
    		 * 在onPrepareOptionsMenu(Menumenu)函数中,首先需要调用:
    		 * 
    		 * super.onPrepareOptionsMenu(menu);
    		 * 
    		 * menu.clear();
    		 * 
    		 * 如果没有clear而直接add的话,那么菜单中菜单项是会“追加”的,这样随着你不停的点menu键,菜单项就不停的增加。
    		 * 
    		 * 另外,android系统默认的菜单样式是支持最多3个一行,如果有4项就每行2个有2行...如果想自定义样式,可以使用xml文件定义样式。
    		 */
    
    		if (1 < 2)
    
    		{
    
    			menu.add(0, 0, 0, "menu_test").setIcon(
    					android.R.drawable.ic_menu_camera);
    
    			menu.add(0, 1, 1, "音乐库").setIcon(android.R.drawable.ic_menu_help);
    
    			menu.add(0, 2, 2, "全部随机播放").setIcon(
    					android.R.drawable.ic_menu_revert);
    
    		}
    
    		else
    
    		{
    
    			menu.add(0, 0, 0, "全部播放")
    					.setIcon(android.R.drawable.ic_menu_camera);
    
    			menu.add(0, 1, 1, "音乐库").setIcon(android.R.drawable.ic_menu_help);
    
    			menu.add(0, 2, 2, "全部随机播放").setIcon(
    					android.R.drawable.ic_menu_revert);
    
    		}
    		return super.onCreateOptionsMenu(menu);
    
    	}
    
    	// 在onOptionsItemSelected方法中设置选择菜单的监听事件
    
    	/**
    	 * 
    	 * 如果要添加点击事件,则要覆盖onOptionsItemSelected(MenuItem item)方法。
    	 * 
    	 * 给MenuItem设置事件监听的方法
    	 * 
    	 * 
    	 */
    
    	@Override
    	public boolean onOptionsItemSelected(MenuItem item) {
    
    		switch (item.getItemId()) {
    
    		case 0:
    
    			System.out.println("音乐");
    
    			break;
    
    		case 1:
    
    			System.out.println("音乐库");
    
    			break;
    
    		case 2:
    
    			System.out.println("全部随机播放");
    
    			break;
    
    		}
    
    		return super.onOptionsItemSelected(item);
    
    	}


    转载请注明出处:http://blog.csdn.net/fth826595345/article/details/9199393



  • 相关阅读:
    axios
    es6
    $route监听路由变化
    容易挂
    自定义全局组件/插件
    eslintrc.js
    dev-server.js
    webpack-dev-server.js
    怎么消除间隔间的空白字符
    es6语法
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3162881.html
Copyright © 2020-2023  润新知