Android -- Options Menu,Context Menu,Popup Menu

來源:互聯網
上載者:User

標籤:android   style   blog   http   color   strong   

Options Menu                                                                          

建立選項菜單的步驟:

1、覆蓋Activity 的onCreateOptionMenu(Menu menu)方法,當菜單第一次被開啟時調用

2、調用Menu 的add( )方法添加功能表項目(MenuItem),同時可以調用MenuItem 的setIcon( )方法來為功能表項目設定表徵圖

3、當功能表項目(MenuItem)被選擇時,覆蓋Activity 的onOptionsItemSelected(MenuItem item)來響應事件

public class MainActivity extends Activity {    // 定義一些變數,後面直接拿來用    private static final int START_ITEM = Menu.FIRST;    private static final int OVER_ITEM = Menu.FIRST + 1;    private static final int SET_ITEM1 = Menu.FIRST + 2;    private static final int SET_ITEM2 = Menu.FIRST + 3;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // 添加功能表項目(組ID,功能表項目ID,排序,標題)        menu.add(0, START_ITEM, 100, "開始");        menu.add(0, OVER_ITEM, 200, "結束");        // 添加子功能表        SubMenu sub1 = menu.addSubMenu("設定");        sub1.add(1, SET_ITEM1, 300, "設定聲音");        sub1.add(1, SET_ITEM2, 400, "設定案頭");        return true;    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        switch (item.getItemId()) {        case START_ITEM:            // 提示資訊            Toast.makeText(this, "開始", Toast.LENGTH_SHORT).show();            break;        case OVER_ITEM:            // 提示資訊            Toast.makeText(this, "結束", Toast.LENGTH_SHORT).show();            break;        case SET_ITEM1:            // 提示資訊            Toast.makeText(this, "聲音設定", Toast.LENGTH_SHORT).show();            break;        case SET_ITEM2:            // 提示資訊            Toast.makeText(this, "設定案頭", Toast.LENGTH_SHORT).show();            break;        default:            break;        }        return super.onOptionsItemSelected(item);    }}

Context Menu                                                                        

顧名思義,與上下文(環境)有關。思想類似於Windows中的按右鍵彈出的捷徑功能表。操作時需要長時間按住某個東東不放。

建立操作功能表的步驟:

1、覆蓋Activity 的onCreateContextMenu(Menu menu)方法,調用Menu的add()方法添加功能表項目(MenuItem)。

2、覆蓋Activity 的onContextItemSelected(MenuItem iitem)來響應事件。

3、調用registerForContextMenu( )方法來為視圖註冊操作功能表。

public class MainActivity2 extends Activity {    private Button btn1;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main2);        // 擷取BUTTON對象        btn1 = (Button) findViewById(R.id.button1);        //在button上註冊操作功能表        registerForContextMenu(btn1);    }    // 建立操作功能表的事件方法    @Override    public void onCreateContextMenu(ContextMenu menu, View v,            ContextMenuInfo menuInfo) {        super.onCreateContextMenu(menu, v, menuInfo);        getMenuInflater().inflate(R.menu.menu_main2, menu);    }    // 操作功能表項目觸發事件    @Override    public boolean onContextItemSelected(MenuItem item) {        switch (item.getItemId()) {        case R.id.start:            Toast.makeText(this, "開始。。。", Toast.LENGTH_SHORT).show();            break;        case R.id.over:            Toast.makeText(this, "結束。。。", Toast.LENGTH_SHORT).show();            break;        default:            break;        }        return super.onContextItemSelected(item);    }}

Popup Menu                                                                             

彈出式菜單.

快顯功能表是停靠在一個View上的一個模式菜單。如果View對象下方有空間,那麼快顯功能表將顯示在停靠對象的下方,否則會顯示在上方。這是非常有用的。

public class MainActivity3 extends Activity  implements OnMenuItemClickListener{    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main3);    }    public void showPopupMenu(View v){        //建立彈出式菜單對象(最低版本11)        PopupMenu popup = new PopupMenu(this,v);        //擷取菜單填充器        MenuInflater inflater = popup.getMenuInflater();        //填充菜單        inflater.inflate(R.menu.menu_main3, popup.getMenu());        //設定功能表項目的單擊事件        popup.setOnMenuItemClickListener(this);        popup.show();    }    //彈出式菜單的單擊事件處理    @Override    public boolean onMenuItemClick(MenuItem item) {        switch (item.getItemId()) {        case R.id.copy:            Toast.makeText(this, "複製。。。", Toast.LENGTH_LONG).show();            break;        case R.id.del:            Toast.makeText(this, "刪除。。。", Toast.LENGTH_LONG).show();            break;        default:            break;        }        return false;    }}

我是天王蓋地虎的分割線                                                               

原始碼:http://pan.baidu.com/s/1dD1Qx01

menu學習.zip

 

 

 

轉載請註明出處:http://www.cnblogs.com/yydcdut

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.