Android 通過xml建立菜單

來源:互聯網
上載者:User

一般情況下,開發人員在res/Layout路徑下來定義應用程式的GUI。應用Eclipse
建立一個新項目後,可以看到res/layout中存在一個 預置的main.xml檔案,其
作為程式預設啟動介面。同樣,可以通過這種方式 建立一個靜態Menu,建立
方法參閱下邊的原始碼:
?View Code XML
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/previous"
android:title="@string/previous"
android:enabled="false"
android:icon="@android:drawable/ic_media_previous"/>
<!--these may not be available in next api (level > 3), so be carefull-->
<item
android:id="@+id/play_pause"
android:title="@string/play"
android:icon="@android:drawable/ic_media_play"/>
<item
android:id="@+id/next"
android:title="@string/next"
android:icon="@android:drawable/ic_menu_next"/>
</menu>
在Activity類中調用剛剛建立的Menu,首先將當前的Activity與指定的Menu XML相關聯:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.layout.menu_mainactivity, menu);
return true;
}
實現onOptionsItemSelected方法: (其目的是捕捉到菜單觸發事件後,對具體觸
發的選項作出響應,實際調用的函數包含在各自的case中)
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.previous:
previous(); //go to previous song in the playlist
return true;
case R.id.play_pause:
isPlaying() ? pause() : play(); //toggle play/pause
return true;
case R.id.next:
next(); //go to next song in the playlist
return true;
}
return false; //should never happen
}
最後可以通過onPrepareOptionMenu方法初始化Menu Items的屬性:
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
//set play_pause menu item look
if(isPlaying()) {
menu
.findItem(R.id.play_pause)
.setTitle(R.string.pause)
.setIcon(android.R.drawable.ic_media_pause);
} else {
menu
.findItem(R.id.play_pause)
.setTitle(R.string.play)
.setIcon(android.R.drawable.ic_media_play);
}
return true;
}

相關文章

聯繫我們

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