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
相關文章
- 通過xml配置檔案定義及佈局元件XML元件
- 通過Go來分析和建立XMLGoXML
- Android -- Options Menu,Context Menu,Popup MenuAndroidContext
- 通過JavaScript定義函式的注意點JavaScript函式
- XML簡明教程(8)什麼是經過型別定義的XML值(轉)XML型別
- 給XML檔案定義DTDXML
- java通過schema校驗xmlJavaXML
- android的Menu使用Android
- 通過xml檔案實現自定義圓角按鈕,以及點選效果XML
- XML中的DTD文件型別定義XML型別
- Android通過Wifi來除錯你的應用AndroidWiFi除錯
- Linux中通過locale來設定字符集Linux
- activiti7 獲取流程定義的xmlXML
- Java Spring Beans.xml裡的Bean定義是如何被解析出來的JavaSpringBeanXML
- Android路由框架AnnoRouter:使用Java介面來定義路由跳轉Android路由框架Java
- 通過android:ssp高效過濾Android IntentsAndroidIntent
- Android 5.0以下XML定義的drawable不識別?attr/屬性的解決思路AndroidXML
- Spring 定時器的使用—Xml、Annotation、自定義Spring定時器XML
- 面向切面的Spring(二) xml中定義aopSpringXML
- Spring 定時器的使用---Xml、Annotation、自定義Spring定時器XML
- SVG XML 格式定義圖形入門介紹SVGXML
- Linux 通過lseek()來實現檔案大小的設定Linux
- 通過鎖定表的統計資訊來穩定sql的執行計劃SQL
- Golang通脈之型別定義Golang型別
- JQuery Ajax通過Handler訪問外部XML資料jQueryXML
- Spring基礎使用(三)-------XML定義AOP的使用SpringXML
- 通過shell指令碼來得到不穩定的執行計劃指令碼
- 未來路由器-邀你來定義路由器
- XML Schema(XSD)詳解:定義 XML 文件結構合法性的完整指南XML
- android中自定義屬性重複定義Android
- jmeter通過cookies來登入JMeterCookie
- Android自己定義提示框Android
- Spring系列第四講 xml中bean定義詳解SpringXMLBean
- 如何通過XIB 建立自定義UIViewUIView
- Java自定義Annotation,通過反射解析AnnotationJava反射
- oracle 過程函式定義字典Oracle函式
- android 螢幕適配一:通過自定義View的方式實現適配AndroidView
- Android Studio通過style和layer-list實現自定義進度條Android