android的Menu使用

jaunt299發表於2014-08-16

android的Menu使用

1。普通的Menu

  先來看看最簡單的Menu怎樣實現。

  在主Activity中覆蓋onCreateOptionsMenu(Menu menu)方法。

複製程式碼
程式碼
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
menu.add(0, 1, 1, "蘋果");
menu.add(0, 2, 2, "香蕉");
return super.onCreateOptionsMenu(menu);
}
複製程式碼

這樣就有了兩個選單選項。如果要新增點選事件,則要覆蓋onOptionsItemSelected(MenuItem item)方法。

複製程式碼
程式碼
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
if(item.getItemId() == 1){
Toast t = Toast.makeText(this, "你選的是蘋果", Toast.LENGTH_SHORT);
t.show();
}
else if(item.getItemId() == 2){
Toast t = Toast.makeText(this, "你選的是香蕉", Toast.LENGTH_SHORT);
t.show();
}
return true;
}
複製程式碼

 

2。SubMenu

  SubMenu的製作也同樣簡單,在第一段程式碼onCreateOptionsMenu(Menu menu)方法中加入幾句,成下面這樣:

複製程式碼
程式碼
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
menu.add(0, 1, 1, "蘋果");
menu.add(0, 2, 2, "香蕉");
SubMenu subMenu = menu.addSubMenu(1, 100, 100, "桃子");
subMenu.add(2, 101, 101, "大桃子");
subMenu.add(2, 102, 102, "小桃子");
return true;
}
複製程式碼

點選“桃子”後就會出現子選單,有兩個子選項,分別是“大桃子”和“小桃子”。

3。Context Menu

  類似於電腦上的右鍵,長按某個View之後彈出來的選單。

  首先在main.xml裡定義若干個按鈕。然後覆蓋onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)方法。裡面的程式碼如下:

首先要註冊一下,在onCreate方法裡,如下程式碼:

複製程式碼
程式碼
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
b1 = (Button) findViewById(R.id.b1);
b2 = (Button) findViewById(R.id.b2);
registerForContextMenu(b1);
registerForContextMenu(b2);
}
複製程式碼

 

複製程式碼
程式碼
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
// TODO Auto-generated method stub
if(v==b1){
menu.setHeaderTitle("這是1");
menu.add(200, 200, 200, "Context Menu 1");
menu.add(200, 201, 201, "Context Menu 2");
}
else if(v==b2){
menu.setHeaderTitle("這是2");
menu.add(300, 300, 300, "C 1");
menu.add(300, 301, 301, "C 2");
}
super.onCreateContextMenu(menu, v, menuInfo);
}
複製程式碼

4。動態Menu

  動態選單就是根據不同的介面有不同的選單。下面的程式碼實現這樣的功能:當主介面的某個TextView的值是“M“和“N”時,彈出不同的選單。

複製程式碼
程式碼
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
String currentText = tv1.getText().toString();
if("M".equals(currentText)){
menu.clear();//先清掉選單
MenuItem item = menu.add(0, 400, 401, "to N");//可以通過點選這個選單項來改變tv1的值這樣(變成N)就可以測試了
item.setIcon(android.R.drawable.alert_dark_frame);//android自帶的圖示
}
if("N".equals(currentText)){
menu.clear();//先清掉選單
MenuItem item = menu.add(0, 401, 402, "to M");//可以通過點選這個選單項來改變tv1的值這樣(變成M)就可以測試了
item.setIcon(android.R.drawable.alert_light_frame);
}
menu.add(0, 402, 403, "Now is " + currentText);//現在共有兩個選單子項
return super.onPrepareOptionsMenu(menu);
}
複製程式碼

  

5。用xml檔案方式建立Menu

之前都是用程式碼的方法建立Menu,用xml配置檔案也可以相當方便地製作選單。

要res/目錄下建一個資料夾,名為menu,下面建一個xml檔案,名為menu_xml_file.xml,程式碼如下:

複製程式碼
程式碼
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:id="@+id/grout_main">
<item android:id="@+id/menu_1"
android:title="This 1"/>
<item android:id="@+id/menu_2"
android:title="This 2" />
</group>
</menu>
複製程式碼

在Activity中覆蓋onCreateOptionsMenu(Menu menu)方法,程式碼如下:

複製程式碼
程式碼
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_xml_file, menu);
return true;
}
複製程式碼

其他的都和在Activity中製作選單一樣。

相關文章