Android 创建菜单。
-学习笔记(金海建)
创建菜单有两种方式,一种用MenuInflater从资源中加载,另一种是动态的创建。
方法一、MenuInflater创建菜单
用MenuInflater 来创建菜单,MenuInflater接口用来是实例化menu XML文件到menu对象的。
1. 建立一个TestControl的工程(该工程用于学习各个控件)
2. 在res目录下创建menu,并在menu目录下创建menu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:title="@string/listView" android:id="@+id/Testlistview" android:icon="@drawable/icon"> </item> <item android:title="@string/radiobutton" android:icon="@drawable/icon" android:id="@+id/radiobutton"> </item> <item android:title="@string/spinner" android:icon="@drawable/icon" android:id="@+id/spinner"> </item> <item android:icon="@drawable/icon" android:id="@+id/autotextview" android:title="@string/dateandtime"> </item> <item android:title="@string/dateandtime" android:icon="@drawable/icon" android:id="@+id/dateandtime"> </item> </menu>
3. onCreateOptionsMenu中调用MenuInflater创建菜单,在onMenuItemSelected方法中处理菜单事件
import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; public class TestControl extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu, menu); return true; } @Override public boolean onMenuItemSelected(int featureId, MenuItem item) { int itemid = item.getItemId(); switch(itemid) { case R.id.Testlistview: break; case R.id.autotextview: break; case R.id.dateandtime: break; case R.id.radiobutton: break; case R.id.spinner: break; default: break; } return true; } }
方法二、调用Menu接口的Add方法来添加。
修改onCreateOptionsMenu
public boolean onCreateOptionsMenu(Menu menu) { menu.add(0, R.id.Testlistview, 0, R.string.listView).setIcon(this.getResources().getDrawable(R.drawable.icon)); menu.add(0, R.id.autotextview, 1, R.string.autotextview); menu.add(0, R.id.dateandtime, 2, R.string.dateandtime); menu.add(0, R.id.radiobutton, 3, R.string.radiobutton); menu.add(0, R.id.spinner, 4, R.string.spinner); return true; }