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>