安卓菜單的使用系列2:使用xml文件顯示菜單

使用xml文件顯示菜單是常用一種菜單顯示方式,下面我們來介紹一下它的使用。

整體思路:在res的menu目錄的main.xml中,用menu和item嵌套的方式定義菜單,在activity中的onMenuItemSelected方法中定義點擊菜單所執行的操作。其中有一個操作會跳轉到另一個activity,這裏需要再清單文件AndroidManifest.xml文件中註冊這個activity,這個activity對應的xml文件自己可以任意定義。

main.xml文件:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<!--showAsAction爲ifRoom表示如果有空間的話可以把菜單放在Action Bar上,爲withText表示可以加標題  -->
<!--  android:showAsAction="ifRoom|withText" -->
    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:icon="@drawable/ic_launcher"
        android:showAsAction="never"
        android:title="@string/action_settings">
        <menu>
            <item android:id="@+id/create_new" android:title="新建文件">   
            </item>
           <item android:id="@+id/open" android:title="打開文件">
           </item>
        </menu>
     </item>
     
    <item 
        android:id="@+id/sys"
        android:icon="@drawable/ic_launcher"
        android:orderInCategory="101"
        android:showAsAction="never"
        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>
MainActivity.java文件:

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}

	@Override
	public 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;
	}
	
	@Override
	public boolean onMenuItemSelected(int featureId, MenuItem item) {
		// TODO Auto-generated method stub
		switch (item.getItemId()) {
		case R.id.create_new://跳轉到另一個activity
			Intent intent=new Intent(MainActivity.this,SystemMenu.class);
			item.setIntent(intent);
			break;
		case R.id.open:
			Toast.makeText(MainActivity.this, "打開菜單", 1).show();
			break;
		case R.id.load:
			Toast.makeText(MainActivity.this, "加載菜單", 1).show();
			break;
		case R.id.save:
			Toast.makeText(MainActivity.this, "保存菜單", 1).show();
			break;
		}
		return super.onMenuItemSelected(featureId, item);
	}

}
SystemMenu.java文件:

public class SystemMenu extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.sysmenu);
	}

	
}




發佈了97 篇原創文章 · 獲贊 1 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章