菜單(三)二級菜單和標題列菜單,標題列菜單
package com.example.menu2;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.widget.Toast;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()) {case R.id.create:Toast.makeText(MainActivity.this, "建立檔案", Toast.LENGTH_SHORT).show();break;case R.id.open:Intent intent = new Intent(MainActivity.this, NextActivity.class);item.setIntent(intent);//Toast.makeText(MainActivity.this, "開啟檔案", Toast.LENGTH_SHORT).show();break;case R.id.load:Toast.makeText(MainActivity.this, "載入", Toast.LENGTH_SHORT).show();break;case R.id.save:Toast.makeText(MainActivity.this, "儲存", Toast.LENGTH_SHORT).show();break;default: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" ></RelativeLayout>
res/menu/main.xml定義菜單
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <!-- orderInCategory菜單順序類別 --> <!-- app:showAsAction="never"表示不會在標題列上面顯示 --> <item android:id="@+id/menu_settings" android:icon="@drawable/communication" android:orderInCategory="100" android:showAsAction="ifRoom|withText" android:title="菜單設定"> <menu> <item android:id="@+id/create" android:title="建立檔案"> </item> <item android:id="@+id/open" android:title="開啟檔案"> </item> </menu> </item> <item android:id="@+id/system" android:icon="@drawable/gear" android:orderInCategory="101" android:showAsAction="ifRoom|withText" android:title="使用者菜單"> <menu> <group android:id="@+id/group1" > <item android:id="@+id/load" android:title="載入"> </item> </group> <group android:id="@+id/group2" > <item android:id="@+id/save" android:title="儲存"> </item> </group> </menu> </item></menu>
定義一個菜單跳轉的頁面
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="172dp" android:textSize="30sp" android:text="這是跳轉的頁面" /></RelativeLayout>
package com.example.menu2;import android.app.Activity;import android.os.Bundle;public class NextActivity extends Activity{@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.activity_next);}}
showAsAction指定菜單顯示的位置這裡是never
如果改為ifRoom|withText,表示如果actionBar有空間就顯示在actionBar而且顯示標題
原始碼下載
這個工程在模擬器上調試正常,在真機上調試二級菜單打不開,不知道是不是手機問題