歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android開發之Android的菜單

理解Android的菜單。

菜單是許多應用程序不可或缺的一部分,Android中更是如此,所有搭載Android系統的手機甚至都要有一個"Menu"鍵,由此可見菜單在Android程序中的特殊性。

android提供了三種菜單類型,分別為options menu,context menu,sub menu。

options menu就是通過按home鍵來顯示。

context menu需要在view上按上2s後顯示。context menu是跟某個具體的view綁定在一起,在activity種用registerForContextMenu來為某個view注冊context menu。context menu在顯示前都會調用onCreateContextMenu來生成menu。onContextItemSelected選中的菜單項。

options menu最多只能在屏幕最下面顯示6個菜單選項,成為icon menu,icon menu不能有checkable選項。多余6的會以more icon menu來調出,成為expanded menu。options menu通過activity的onCreateOptionsMenu來生成,這個函數只會在menu第一次生成時調用。任何想改變options menu的想法只能在onPrepareOptionsMenu來實現,這個函數會在menu顯示前調用。onOptionsItemSelected 處理選中的菜單項。

options menu和context menu  menu都有可以加入子菜單,子菜單不能種不能嵌套子菜單。

android還提供了對菜單項進行分組的功能,可以把相似功能的菜單項分成同一個組,這樣就可以通過調用setGroupCheckable,setGroupEnabled,setGroupVisible來設置菜單屬性,而無須單獨設置。

直接在代碼中添加菜單項,給菜單項分組等,這是比較傳統的做法,它存在著一些不足。比如說,為了響應每個菜單項,我們需要用常量來保存每個菜單項的ID等。為此,Android提供了一種更好的方式,就是把menu也定義為應用程序的資源,通過android對資源的本地支持,使我們可以更方便地實現菜單的創建與響應。這裡我們就介紹一下使用XML文件來加載和響應菜單。

我們需要做這幾步:

在/res目錄下創建menu文件夾

在menu目錄下使用與menu相關的元素定義xml文件,文件名是隨意的,android會自動為其生成資源ID。例如:R.menu.options對應menu目錄的options.xml資源文件

使用xml文件的資源ID,將xml文件中定義的菜單項添加到menu對象中

響應菜單項時,使用每個菜單項對應的資源ID

使用MenuInflater添加菜單項

inflater在android中建立了從資源文件到對象的橋梁,MenuInflater即把菜單xml資源轉換為對象並添加到menu對象中,它可以通過activity的getMenuInflater()得到。我們在MainActivity中重寫onCreateOptionsMenu(...)方法。

  1. @Override  
  2.   
  3. public boolean onCreateOptionsMenu(Menu menu) {  
  4.   
  5.    MenuInflater inflater = this.getMenuInflater();  
  6.   
  7.    inflater.inflate(R.menu.options, menu);  
  8.   
  9.    return true;  

響應菜單項

最後重寫onOptionsItemSeleted(...)方法。

  1. @Override  
  2.   
  3. public boolean onOptionsItemSelected(MenuItem item) {  
  4.   
  5.    switch (item.getItemId()) {  
  6.   
  7.    case R.id.nouveauId:  
  8.   
  9.        Intent intent = new Intent(MenuCaiDanActivity.this,  
  10.   
  11.               NouveauActivity.class);  
  12.   
  13.        startActivity(intent);  
  14.   
  15.        break;  
  16.   
  17.    case R.id.exitId:  
  18.   
  19.        MenuCaiDanActivity.this.finish();  
  20.   
  21.        break;  
  22.   
  23.    }  
  24.   
  25.    return true; 
Copyright © Linux教程網 All Rights Reserved