zoukankan      html  css  js  c++  java
  • Android ActionBar详解(二)--->使用ActionBar显示选项菜单

    MainActivity如下:

    package cc.testsimpleactionbar1;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.graphics.Color;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.widget.TextView;
    import android.widget.Toast;
    /**
     * Demo描述:
     * 使用ActionBar显示选项菜单
     * 
     * 背景资料:
     * Android手机不强制要求设备必须有Menu键,这样导致的问题是用户无法打开
     * 选项菜单.但此时即可以将选项菜单设置成Action Item.
     * 即从Android 3.0 开始为MenuItem新增如下方法:
     * setShowAsAction(int actionEnum),该方法用于设置是否将该菜单栏
     * 显示在ActionBar上,作为ActionItem
     * 参数值如下:
     * SHOW_AS_ACTION_ALWAYS:总是将该MenuItem显示在ActionBar上
     * SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW:将该Action View折叠成普通菜单项
     * SHOW_AS_ACTION_IF_ROOM:当ActionBar位置有足够空间时才显示该MenuItem
     * SHOW_AS_ACTION_NEVER:不将该MenuItem显示在ActionBar上
     * SHOW_AS_ACTION_WITH_TEXT:将该MenuItem显示在ActionBar上,且显示该菜单项的文本
     * 
     * 当然我们最好是在xml文件中来定义菜单.
     * 所以在menu下的item属性中指定showAsAction属性即可
     * 该属性的值和上面提到的参数值的表达形式很类似,作用是相同的
     * 
     * 
     * 参考资料:
     * 1 Android疯狂讲义(第二版)
     * 2 http://blog.csdn.net/think_soft/article/details/7378824
     *   Thank you very much
     * 
     * 测试说明:
     * 当手机处于横屏的时候,在因为ActionBar的空间有限
     * 所以只会显示每个Item的图标,不会显示其title
     * 在横屏的时候既显示图标也显示title
     *
     */
    public class MainActivity extends Activity {
        private TextView mTipTextView;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
    		init();
    	}
    	
    	private void init(){
    		mTipTextView=(TextView) findViewById(R.id.tipTextView);
    	}
    
    	//生成对应的菜单,并添加到Menu中
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu) {
    		getMenuInflater().inflate(R.menu.action_menu, menu);
    		return true;
    	}
    	
    	//菜单项被选中时执行该方法
    	@Override
    	public boolean onOptionsItemSelected(MenuItem menuItem) {
    		if (menuItem.isCheckable()) {
    			menuItem.setChecked(true);
    		}
    		switch (menuItem.getItemId()) {
    		case R.id.font10:
    			mTipTextView.setTextSize(10 * 2);
    			break;
    		case R.id.font12:
    			mTipTextView.setTextSize(12 * 2);
    			break;
    		case R.id.font14:
    			mTipTextView.setTextSize(14 * 2);
    			break;
    		case R.id.font16:
    			mTipTextView.setTextSize(16 * 2);
    			break;
    		case R.id.font18:
    			mTipTextView.setTextSize(18 * 2);
    			break;
    		case R.id.redFont:
    			mTipTextView.setTextColor(Color.RED);
    			break;
    		case R.id.greenFont:
    			mTipTextView.setTextColor(Color.GREEN);
    			break;
    		case R.id.blueFont:
    			mTipTextView.setTextColor(Color.BLUE);
    			break;
    		case R.id.plain_item:
    			Toast toast = Toast.makeText(MainActivity.this, "单击了普通菜单项",Toast.LENGTH_SHORT);
    			toast.show();
    			break;
    
    		default:
    			break;
    		}
    		return true;
    	}
    
    }
    


    main.xml如下:

    <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" >
    
        <TextView
            android:id="@+id/tipTextView"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:text="可通过菜单修改文字的大小和颜色"
            android:textSize="16sp"
            android:gravity="center"
         />
    
    </RelativeLayout>


    action_menu.xml如下:

    <menu xmlns:android="http://schemas.android.com/apk/res/android" >
         <item 
             android:title="文字大小"
             android:icon="@drawable/font"
             android:showAsAction="always|withText">
             <menu>
                 <group android:checkableBehavior="single">
                     <item 
                         android:id="@+id/font10"
                         android:title="10"
                         />
                     <item 
                         android:id="@+id/font12"
                         android:title="12"
                         />
                     <item 
                         android:id="@+id/font14"
                         android:title="14"
                         />
                     <item 
                         android:id="@+id/font16"
                         android:title="16"
                         />
                     <item 
                         android:id="@+id/font18"
                         android:title="18"
                         />
                 </group>
             </menu>
         </item>
         
         <item 
             android:id="@+id/plain_item"
             android:icon="@drawable/ic_launcher"
             android:title="普通菜单项"
             android:showAsAction="always|withText"
         />
        
         <item 
             android:title="设置颜色"
             android:icon="@drawable/color"
             android:showAsAction="always|withText">
             <menu>
                 <group>
                     <item 
                         android:id="@+id/redFont"
                         android:title="红色"
                         />
                     <item 
                         android:id="@+id/greenFont"
                         android:title="绿色"
                         />
                     <item 
                         android:id="@+id/blueFont"
                         android:title="蓝色"
                         />
                 </group>
             </menu>
         </item>
    
    </menu>


     

  • 相关阅读:
    LeetCode 1122. Relative Sort Array (数组的相对排序)
    LeetCode 46. Permutations (全排列)
    LeetCode 47. Permutations II (全排列 II)
    LeetCode 77. Combinations (组合)
    LeetCode 1005. Maximize Sum Of Array After K Negations (K 次取反后最大化的数组和)
    LeetCode 922. Sort Array By Parity II (按奇偶排序数组 II)
    LeetCode 1219. Path with Maximum Gold (黄金矿工)
    LeetCode 1029. Two City Scheduling (两地调度)
    LeetCode 392. Is Subsequence (判断子序列)
    写程序判断系统是大端序还是小端序
  • 原文地址:https://www.cnblogs.com/riasky/p/3361002.html
Copyright © 2011-2022 走看看