안드로이드에서 MenuInflater 를 이용하여 OptionsMenu를 구성하는 예
layout/main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:id="@+id/linearLayout1"> <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/persian_smile" android:scaleType="matrix"/> </LinearLayout>
res/menu/sample_menu.xml
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/img1" android:title="그림 1" android:orderInCategory="0" /> <item android:id="@+id/img2" android:title="그림 2" android:orderInCategory="1"/> <item android:id="@+id/img3" android:title="그림 3" android:orderInCategory="2" /> </menu>
TestActivity.java
package com.example.androidapp; import android.app.Activity; import android.os.Bundle; import android.view.ContextMenu; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ContextMenu.ContextMenuInfo; import android.widget.ImageView; import android.widget.LinearLayout; public class TestActivity extends Activity { LinearLayout linearLayout; ImageView iv; public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); linearLayout = (LinearLayout) findViewById(R.id.linearLayout1); registerForContextMenu(linearLayout); iv = (ImageView) findViewById(R.id.imageView1); } @Override public boolean onCreateOptionsMenu(Menu menu) { /* menu.add(Menu.NONE, 1001, Menu.NONE, "그림 1"); menu.add(Menu.NONE, 1002, Menu.NONE, "그림 2"); menu.add(Menu.NONE, 1003, Menu.NONE, "그림 3"); */ new MenuInflater(this).inflate(R.menu.sample_menu, menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { if(item.getItemId()==R.id.img1) { iv.setImageResource(R.drawable.mountain); } else if (item.getItemId()==R.id.img2) { iv.setImageResource(R.drawable.persian_smile); } else if (item.getItemId()==R.id.img3) { iv.setImageResource(R.drawable.ic_launcher); } return super.onOptionsItemSelected(item); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { menu.add(Menu.NONE, 1001, Menu.NONE, "그림 1"); menu.add(Menu.NONE, 1002, Menu.NONE, "그림 2"); menu.add(Menu.NONE, 1003, Menu.NONE, "그림 3"); super.onCreateContextMenu(menu, v, menuInfo); } @Override public boolean onContextItemSelected(MenuItem item) { if(item.getItemId()==1001) { iv.setImageResource(R.drawable.mountain); } else if (item.getItemId()==1002) { iv.setImageResource(R.drawable.persian_smile); } else if (item.getItemId()==1003) { iv.setImageResource(R.drawable.ic_launcher); } return super.onContextItemSelected(item); } }