Android的設計如果沒意外的話通常有三棵按鈕,BACK,HOME,OPTION


(圖片來源:http://developer.android.com/design/index.html)

在OPTION鍵按下後會出現象是下圖的選單


(圖片來源:http://developer.android.com/guide/topics/ui/menus.html)

這設計在iOS 上面目前是沒有的,但是在Windows Phone上面有類似的東西叫做App Bar,但是並非由實體鍵盤呼叫,而是透過APP下方的三個小點
(圖片來源:http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff431813(v=vs.105).aspx)

這一篇我們來討論一下,如何來透過C# + Xamarin 來作到Android 下的 Options Menu 介紹一下Sample : 按下實體鍵盤的OPTION鍵之後,會出現一個OptionMenu上面只有一個就是選擇按鈕.

.
點選選擇按鈕之後就會出現兩個選擇使用者決定行為分別為


按下第一個(開啟當麻許的超技八)就會打開Android系統設定的瀏覽器開啟我的網誌,

按下第二個就會開啟Market上的愛料理的下載,接下來我們來看看怎麼實作

1.首先,我們採取比較偷懶且簡單的方法就是使用Layout敘述來幫忙,

我們在專案的  Resources下建立一個Menu的檔案夾並且我在建立一個檔案叫做OptionMenu.xml 如下圖:

再來我們來看看這xml檔案敘述啥內容

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:id="@+id/menuMain"
        android:title="選擇動作" >
    <menu>
      <item android:id="@+id/itemMenu1"
            android:title="開啟當麻許的超技八" />
      <item android:id="@+id/itemMenu2"
            android:title="開啟Market上的愛料理" />
      
    </menu>
  </item>
</menu>

我建立一個Menu下有一個Item為'選擇動作'  其底下還有一個Menu裡面有兩個item 就這巢狀結構決定於階層的方式

2.接下來,我們看看在主要的Activity 上面如何將OptionMenu呼叫出來並且決定被選取後的行為,我們先得覆寫在 Activity中 OnCreateOptionsMenu 的事件,讓他建立起OpetionMenu

public override bool OnCreateOptionsMenu(IMenu menu)
{
    //將Resoirces下的Menu/OptionMenu.xml 載入
    MenuInflater.Inflate(Resource.Menu.OptionMenu, menu);
    return true;
}

再來就是選單點下去的後的行為

public override bool OnOptionsItemSelected(IMenuItem item)
{
    switch (item.ItemId)
    {
        //如果選取的是 開啟當麻許的超技八
        case Resource.Id.itemMenu1:
            Toast.MakeText(this, "開啟當麻許的超技八", ToastLength.Short).Show();
            //開啟一個Inetnt 並且將此呼叫起來
            StartActivity(new Intent(Intent.ActionView, Android.Net.Uri.Parse("http://no2don.blogspot.com")));
            return true;
        //如果選取的是 開啟Market的愛料理 Download
        case Resource.Id.itemMenu2:
            Toast.MakeText(this, "開啟Market的愛料理 Download", ToastLength.Short).Show();
            //開啟一個Inetnt 並且將此呼叫起來
            StartActivity(new Intent(Intent.ActionView, Android.Net.Uri.Parse("market://details?id=" + "com.polydice.icook")));
            return true;
        default:
            return base.OnOptionsItemSelected(item);
    }
}

其中如果只是拿來用Toast 顯示一些文字也太無聊,所以決定就用 Intent 呼叫起Market 還有一個網址 結果:

 

Reference:

http://developer.android.com/guide/topics/resources/menu-resource.html

http://stackoverflow.com/questions/15224150/how-to-create-a-option-menu-in-android

http://developer.android.com/reference/android/view/MenuInflater.html

[Xamarin] 製作Options Menu、Intent 呼叫網址和Market (转帖)的更多相关文章

  1. [Xamarin] 製作吐司(Toast)以及圖文並茂的Toast (转帖)

    最近在看Xamarin使用C#來撰寫Android App . 紀錄一下,順便給之後有需要的人可以有所參考 :) 今天要來聊的是關於Toast 這東西,這在以前Android 上面我是很常使用 拿來l ...

  2. [Xamarin] 用Service 來製作一個Notification的時鐘 (转帖)

    這篇利用來製作一個會出現在Notification的時鐘,來敘述一下 Service,在你製作的App被關閉時,可以透過Service繼續運行你想處理的部分,當然Service 也有其生命周期 接下來 ...

  3. [Xamarin] 透過 intent-filter 來接管 http ,製作偽瀏覽器 (转帖)

    使用Android 的朋友一定對這畫面不陌生在開啟網址的時候,或是Youtube連結的時候,因為Android 發現,你手機安裝的App有哪些可以支援這些東西的瀏覽 所以,就可以使用甚麼東西來進行開啟 ...

  4. Android -- Options Menu,Context Menu,Popup Menu

    Options Menu                                                                           创建选项菜单的步骤: 1. ...

  5. 【转】常用 Microsoft .NET Framework 各版本下載網址列表

    研究] 常用 Microsoft .NET Framework 各版本下載網址列表 2014-05-23 僅列常用的 (IA64, Beta, hotfix, ... 不列) Microsoft .N ...

  6. IE網址欄快速輸入網址,“Ctrl+Enter”補齊“.com”

    繁體中文Windows,預設 IE 在網址列輸入 abc,然後按 Ctrl+Enter ,會跳到www.abc.com.tw, 但較常用的連結是www.abc.com,如何修改这一設定呢? 可以透過修 ...

  7. Day1 Toast/Menu/Intent传递数据

    ** --------------->未经允许,禁止转载<----------------** 今天是我读<第二行代码>的第一天,也是我第一次开始写CSDN博客,之前的笔记都在 ...

  8. CSS製作動畫效果(Transition、Animation、Transform)

    CSS 2D Transforms https://www.w3schools.com/css/css3_2dtransforms.asp CSS 3D Transforms https://www. ...

  9. Options Menu的android3.0以上和以下版本显示刷新原理,刷新适配

    一 显示区别: 2.3.x及以下版本,需要按菜单键显示菜单,当菜单打开时,第一个可见的部分是图标菜单,最多可容纳6个菜单项.如果你的菜单包括Android的地方超过6项,第六项,其余将被归到”More ...

随机推荐

  1. ---iproute2 策略路由

    http://linux.chinaunix.net/techdoc/net/2007/03/30/953750.shtml 这篇文章写的例子讲明白策略路由的使用,但是本身好像不用这么麻烦, 用系统默 ...

  2. ORACLE 回收站导致的故障

    ORACLE 回收站导致的故障 一.故障 (1)现象     一个生产环境,oracle数据库挂死,严重影响生产.查死锁sql,发现大量日志插入语句,并且每条运行时间都超过一分钟,插入非常缓慢.据分析 ...

  3. MongoDB-JAVA-Driver 3.2版本常用代码全整理(1) - 增删改

    MongoDB的3.x版本java驱动相对2.x做了全新的设计,类库和使用方法上有很大区别.例如用Document替换BasicDBObject.通过Builders类构建Bson替代直接输入$命令等 ...

  4. VC MFC在CMFCToolBar工具栏中加入组合框

    如何在CMFCToolBar工具栏中加入组合框等控件,且先看在线MSDN上怎么说的: 要增加一个组合框,需要完成以下步骤: 1.在工具栏资源中,增加一个对应ID资源号的按钮. 2.在主框架(mainf ...

  5. java并发的理解

    我认为并发大体上分为两种情况 1,多个线程或者进程访问公共资源,比如12306 2,多个线程访问同一个实例变量,比如tomcat 多个请求的线程访问同一个单例bean,如果bean是有状态的,就可能出 ...

  6. machine learning----->谷歌Cloud Machine Learning平台

    1.谷歌Cloud Machine Learning平台简介: 机器学习的三要素是数据源.计算资源和模型.谷歌在这三个方面都有强大的支撑:谷歌不仅有种类丰富且数量庞大的数据资源,而且有强大的计算机群提 ...

  7. JavaScript小功能

    1. JS判断是否为一个有效日期 1 2 3 4 function check(date){     return (new Date(date).getDate()==date.substring( ...

  8. 5.HotSpot的算法实现

    1.枚举根节点 在可达性分析中,可以作为GC Roots的节点有很多,但是现在很多应用仅仅方法区就有上百MB,如果逐个检查的话,效率就会变得不可接受. 而且,可达性分析必须在一个一致性的快照中进行-即 ...

  9. 对于for循环构成的九宫格里的button,如何满足“有默认选中的一个,并且只能选中一个”?

    需要构造一个全局变量self.priceBtn 在九宫格写法中 ) { self.priceBtn = btn; self.priceBtn.selected = YES; } 在button的点击方 ...

  10. python学习之——计算给出代码中注释、代码、空行的行数

    题目:计算给出代码中注释.代码.空行的行数 来源:网络 思路:注释行以 ‘#’开头,空行以 ‘\n’ 开头,以此作为判断 def count_linenum(fname): fobj = open(f ...