安卓--菜單

來源:互聯網
上載者:User

標籤:

在活動中使用Menu

不知道你還記不記得,在上一章中建立你的第一個Android項目時,ADT在HelloWorldActivity中自動建立了一個onCreateOptionsMenu()方法。這個方法是用於在活動中建立菜單的,由於當時我們的重點不在這裡,所以直接先忽略了,現在可以來仔細分析一下了。

手機畢竟和電腦不同,它的螢幕空間非常有限,因此充分地利用螢幕空間在手機介面設計中就顯得非常重要了。如果你的活動中有大量的菜單需要顯示,這個時候介面設計就會比較尷尬,因為僅這些菜單就可能佔用螢幕將近三分之一的空間,這該怎麼辦呢?不用擔心,Android給我們提供了一種方式,可以讓菜單都能得到展示的同時,還能不佔用任何螢幕的空間。

首先在res目錄下建立一個menu檔案夾,右擊res目錄→New→Folder,輸入檔案夾名menu,點擊Finish。接著在這個檔案夾下再建立一個名叫main的菜單檔案,右擊menu檔案夾→New→Android XML File,2.9所示。

 

圖 2.9

檔案名稱輸入main,點擊Finish完成建立。然後在main.xml中添加如下代碼:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item

        android:id="@+id/add_item"

        android:title="Add"/>

    <item

        android:id="@+id/remove_item"

        android:title="Remove"/>

</menu>

這裡我們建立了兩個功能表項目,其中<item>標籤就是用來建立具體的某一個功能表項目,然後通過android:id給這個功能表項目指定一個唯一識別碼,通過android:title給這個功能表項目指定一個名稱。

然後開啟FirstActivity,重寫onCreateOptionsMenu()方法,代碼如下所示:

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

通過getMenuInflater()方法能夠得到MenuInflater對象,再調用它的inflate()方法就可以給當前活動建立菜單了。inflate()方法接收兩個參數,第一個參數用於指定我們通過哪一個資源檔來建立菜單,這裡當然傳入R.menu.main,第二個參數用於指定我們的功能表項目將添加到哪一個Menu對象當中,這裡直接使用onCreateOptionsMenu()方法中傳入的menu參數。然後給這個方法返回true,表示允許建立的菜單顯示出來,如果返回了false,建立的菜單將無法顯示。

當然,僅僅讓菜單顯示出來是不夠的,我們定義菜單不僅是為了看的,關鍵是要菜單真正可用才行,因此還要再定義菜單響應事件。在FirstActivity中重寫onOptionsItemSelected()方法:

public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) {

case R.id.add_item:

Toast.makeText(this, "You clicked Add", Toast.LENGTH_SHORT).show();

break;

case R.id.remove_item:

Toast.makeText(this, "You clicked Remove", Toast.LENGTH_SHORT).show();

break;

default:

}

return true;

}

在onOptionsItemSelected()方法中,通過調用item.getItemId()來判斷我們點擊的是哪一個功能表項目,然後給每個功能表項目加入自己的邏輯處理,這裡我們就活學活用,彈出一個剛剛學會的Toast。

重新運行程式,並按下Menu鍵,效果2.10所示。

 

圖 2.10

可以看到,菜單預設是不會顯示出來的,只有按下了Menu鍵,菜單才會在底部顯示出來,這樣我們就可以放心地使用菜單了,因為它不會佔用任何活動的空間。然後點擊一下Add功能表項目,效果2.11所示。

安卓--菜單

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.