Android通過XML來定義Menu
直接在程式碼中新增選單項,給選單項分組等,這是比較傳統的做法,它存在著一些不足。
比如說,為了響應每個選單項,我們需要用常量來儲存每個選單項的ID等。
為此,Android提供了一種更好的方式,就是把menu也定義為應用程式的資源,通過android對資源的本地支援,使我們可以更方便地實現選單的建立與響應。b
本文就介紹如何使用XML檔案來載入和響應選單,我們需要做這幾步:
1.在/res目錄下建立menu資料夾
2.在menu目錄下使用與menu相關的元素定義xml檔案,檔名是隨意的,android會自動為其生成資源ID。
例如:R.menu.menu對應menu目錄的menu.xml資原始檔
3.使用xml檔案的資源ID,將xml檔案中定義的選單項新增到menu物件中
4.響應選單項時,使用每個選單項對應的資源ID。
package cn.fansunion.menu;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;
import cn.fansunion.R;
public class OptionMenuWithXmlActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.option_menu);
}
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_one:
Toast.makeText(this, "你點選了menu_one", Toast.LENGTH_LONG).show();
break;
case R.id.submenu_one:
Toast.makeText(this, "你點選了submenu_one", Toast.LENGTH_LONG).show();
break;
default:
return super.onOptionsItemSelected(item);
}
return true;
}
}
rec/menu目錄
menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/menu_one"
android:orderInCategory="3"
android:title="Android應用開發真有趣"/>
<item
android:id="@+id/menu_two"
android:orderInCategory="2"
android:title="iOS開發也不錯"/>
<item
android:id="@+id/menu_three"
android:enabled="false"
android:orderInCategory="4"
android:title="Java服務端也不錯"/>
<!-- Part 2:子menu的設定,將在menuItem內部巢狀一個<Menu>,在這個例子中的子選單,試驗了快捷鍵的方式 -->
<item
android:id="@+id/submenu"
android:orderInCategory="3"
android:title="小雷的興趣">
<menu >
<item
android:id="@+id/submenu_one"
android:alphabeticShortcut="n"
android:title="網際網路技術"
android:visible="true"/>
<item
android:id="@+id/submenu_two"
android:alphabeticShortcut="g"
android:title="投資理財"
android:visible="true"/>
</menu></item>
</menu>
更多關於通過XML定義Menu的資訊,參考以下3篇文章,Copy一大堆別人的,大家都一樣的API和屬性用法,挺沒有意思的。
參考資料:
Android通過XML來定義Menu
http://blog.csdn.net/jaycee110905/article/details/8765082
Android 中自定義 Menu 資源
http://ybxu-123.blog.163.com/blog/static/594737702010680575834/
Android選單詳解(五)——使用XML生成選單
http://www.cnblogs.com/codingmyworld/archive/2011/08/28/2155594.html
相關文章
- 通過Go來分析和建立XMLGoXML
- XML Schema定義XML
- 給XML檔案定義DTDXML
- Java Spring Beans.xml裡的Bean定義是如何被解析出來的JavaSpringBeanXML
- Spring 定時器的使用—Xml、Annotation、自定義Spring定時器XML
- Spring 定時器的使用---Xml、Annotation、自定義Spring定時器XML
- 面向切面的Spring(二) xml中定義aopSpringXML
- activiti7 獲取流程定義的xmlXML
- Android路由框架AnnoRouter:使用Java介面來定義路由跳轉Android路由框架Java
- SVG XML 格式定義圖形入門介紹SVGXML
- Spring基礎使用(三)-------XML定義AOP的使用SpringXML
- XML Schema(XSD)詳解:定義 XML 文件結構合法性的完整指南XML
- Spring系列第四講 xml中bean定義詳解SpringXMLBean
- Android Studio通過style和layer-list實現自定義進度條Android
- Android APK開發:Menu介面功能詳解AndroidAPK
- Android XML 屬性AndroidXML
- Android-通過cmake整合ffmpegAndroid
- android基礎學習-android篇day16-Menu的使用Android
- android 螢幕適配一:通過自定義View的方式實現適配AndroidView
- Golang通脈之型別定義Golang型別
- Android學習筆記(建立Menu,Intent的使用)Android筆記Intent
- Android自定義View之定點寫文字AndroidView
- 通過鎖定表的統計資訊來穩定sql的執行計劃SQL
- XML Schema 複雜元素型別詳解:定義及示例解析XML型別
- SpringBoot通過yml和xml檔案配置日誌輸出Spring BootXML
- 未來路由器-邀你來定義路由器
- 【android】自定義佈局控制控制元件的位置可以通過繼承FrameLayout實現Android控制元件繼承
- jmeter通過cookies來登入JMeterCookie
- 把list集合的內容寫入到Xml中,通過XmlDocument方式寫入Xml檔案中XML
- Android Bluetooth hciReason(HCI_ / HCI_ERR_)定義Android
- Android通過WindowManager實現懸浮框Android
- VARCHART XGantt系列教程:使用顏色來定義語義
- 想問一下你的那個模板檔案定義在根目錄下Template是通過什麼方式定義的?
- Dynamics CRM 通過配置來設定查詢欄位的預設檢視
- Vue定義全域性過濾器filterVue過濾器Filter
- 思科Webex定義協作的未來Web
- Feign通過自定義註解實現路徑的轉義
- 通過Go來分析和建立JSONGoJSON
- 通過信鴿來解釋 HTTPSHTTP