使用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);
}
}