ActionBar详解(二)--->使用ActionBar显示选项菜单

简介: MainActivity如下: package cc.testsimpleactionbar1;import android.os.Bundle;import android.

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>


 

相关文章
|
6月前
|
Android开发
android 快速更改TabLayout的选中背景颜色。
android 快速更改TabLayout的选中背景颜色。
112 0
|
4月前
|
XML Android开发 数据格式
Android 中如何设置activity的启动动画,让它像dialog一样从底部往上出来
在 Android 中实现 Activity 的对话框式过渡动画:从底部滑入与从顶部滑出。需定义两个 XML 动画文件 `activity_slide_in.xml` 和 `activity_slide_out.xml`,分别控制 Activity 的进入与退出动画。使用 `overridePendingTransition` 方法在启动 (`startActivity`) 或结束 (`finish`) Activity 时应用这些动画。为了使前 Activity 保持静止,可定义 `no_animation.xml` 并在启动新 Activity 时仅设置新 Activity 的进入动画。
89 12
|
Android开发
Android TabLayout修改选中字体大小
Android TabLayout修改选中字体大小
1873 0
Android TabLayout修改选中字体大小
|
Android开发 数据格式 XML
Android 解决 Toolbar 的 Menu 图标无法显示
menu代码如下 效果如图: 图1.png 将代码修改,如下: 即在每个item节点中添加 android:showAsAction="always" ...
1497 0
|
Android开发
android设置toolbar的menu itemTextView颜色
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.
1349 0
|
Android开发
Android 底部Dialog显示
public void showComplainDialog() { ComplainDialog complain_dialog = new ComplainDialog(OrderDetialActivity.
512 0
|
Java Android开发
android中设置ListView的选中的Item的背景颜色
ListView中没有默认的选择颜色,只有选择Item后的焦点颜色,鼠标点击时Item有颜色,放开鼠标后颜色也就没有了,要实现放开鼠标后选择项的背景还是有颜色的。              1、配置main.
1100 0