android菜單簡易筆記

來源:互聯網
上載者:User

標籤:des   android   style   ar   io   color   os   使用   sp   

API Guides ----UI------Menus

Menu是一個通用UI組件,提供類似使用者使用助手 

3.0(API 11)安卓不再提供一個專用的功能表按鈕,安卓APP應用當中最多可以出現6個菜單,如果要提供更多選項,在下發會出現一個more,點擊後出現其他選項。使用菜單鍵有3種方式

options menu 收集菜單選項提供給APP ,可以放置一些全域按鈕,比如,搜尋,設定, Compose; 在android 2.3 以下是存在真實按鈕的;使用3.0或者更高版本會提供 actionbar構成整個螢幕, 是可懸浮選項,3.0 Menu button就已經到期了

android建議使用XML定義菜單,可以在activity 或 fragment 使用菜單填充 Menu     

優點:形象化菜單結果,可以讓內容和行為代碼分離,可以提供可選擇的菜單適應不同版本和尺寸

如果版本是android 2.3或者更低,系統會調用 onCreateOptionsMenu() 去建立一個option menu, 如果安卓版本是3.0 那麼系統會調用 onCreateOption menu 建立並有序地顯示 action bar

事件:

當使用者去選擇一個Item 選項的時候,系統會調用 onOptionsItemSelected () , 並通過getItemid(),得到一個所選的 Item的選項的標識符(id)

再根據id 操作

onOptionItemSelected( MenuItem item ){

switch(item.getItemId()){

case R.id.open: 

方法();

break;}}

注意:這個菜單僅僅和當前的Activity 有關係,在其他是不會顯示的

在android3.0 當中增加了一個能力:在XML中添加 android: onClick 屬性,這個屬性的值必須定義一個方法名稱,方法的名稱可以使用在菜單當中,此方法必須public , 且僅有一個參數 MenuItem , 當系統方法被調用的時候,這個方法就會被觸發;

<item

android : id ="@+id /save"

android : title = "never"

android:showAsAction="never"

android: onClick="save"

/>

public void save Message(MenuItem itme ){ }


規則:

必須定義一個menu節點,

<menu>裡面可以包含menu items 選項,這個<menu>必須作為根節點,在裡面可以控制一個或多個<Item> 和 <group>

<item>裡面提供一個單獨的item在這個menu中,這個元素可能會包含一個嵌套的menu的節點元素,是為了建立一個菜單

            item元素支援多個屬性,可以定義在菜單的選項的行為中

                android: id 是菜單的唯一識別碼,允許應用識別菜單所選項 

                android: icon 為菜單添加圖片(2.3可以加圖片,高版本不添加圖片)

                android: titile 為菜單提供標題

                android: showAsAction :   在什麼時候顯示在action bar上面(平板上,高版本當中)

showAsAction : 是一個類似鍵盤鍵,顯示在導覽功能表欄上(Action Bar),這個導覽功能表欄會顯示在一個activity 當中,包含一個ActionBar,API版本最低3.0 android 11(設定never菜單就不會跳到右上方)

相關屬性:

ifRoom  如果上面有空間,我們就放置這個Item選項,

withText    可以包含一些文字,或者標題,多放其他屬性用”|“

never    不要放置( 右上方 )

always    不管有沒有位置都放置


<group>一個可選項,不可見 地包含一個<Item>元素,可以允許我們去把菜單進行分類

子功能表:

在任意Item當中我們都可以添加子功能表(除了子功能表),menu作為item的子項目

子功能表事件:

一,

一般處理一級菜單

onOptionsItemSelected( MenuItem item ){

    SubMenu subMenu = item . getSubMenu();

    MenuItem menuItem  = subMenu . findItem(子功能表ID);

    menuItem.setIntent(intent);}

SubMenu subMenu = item

一般處理二級菜單

二,

onMenuItemSelected ( int featureId , MenuItem item ){

    switch(item.getItemId()){

    case R.id.節點:

    break;

}}

①Contextual Menus操作功能表:(長按)

提供一個動作去影響一個特殊的選項,在任何一個view中都可以添加一個顯示上下文幀布局菜單,但是經常使用於ListView 或GridView當中,載入模式有兩種:浮動列表,長按事件才會出來;

建立一個操作功能表

1,view上面註冊上下文menu,使用registerForContextMenu() ,menu就會關聯到View;    如果activity中使用ListView或GridView,當我們想要每一個Item都提供一個操作功能表的時候,需要在ListView或GridView中去註冊 registerForContextMenu();

2. 在Activity或者Fragment 當中實現onCreateContextMenu() 方法,註冊後會接收一個長按事件,系統會調用onCreateContextMenu()

   例如:

        ①listView中註冊    registerForContextMenu(listView);

        ① 在menu 設定幾個菜單選項

        ②實現方法

    onCreateContextMenu(ContextMenu mennu,View v,ContextMenuInfo, info){

    getMenuInflater().inflate(Menu的ID ,menu)}

       

onContextItemSelected(ItemMenu item){

    AdapterContextMenuInfo info =  (AdapterContextMenuInfo)item.getMenuInfo();//返回一個介面

    switch(item.getItemId()){

    case R.id.edit: 

       String value = adapter.getItem( info . position );

    break;}}

3.MenuInflater 允許從一個資源檔中讓我們填充一個上下的文菜單,回調方法的參數包含View,當使用者長按後得到一個ContextMenu.ContextMenuInfo對象,此對象提供一個關於被選中的Item的額為的資訊。

②Action mode 操作功能表 android 3.0 API(11)

讓系統 implement ActionMode , 讓使用者獲得焦點,並和它進行互動的選項,讓使用者選擇選項時,操作功能表會顯示在螢幕的頂端。當模式被使用時,使用者可以選擇多個選項,或者反向選擇等,當使用者按返回鍵時讓模式消失,這個操作功能表可以單獨使用,也可以結合actionbar 使用。如果目前的版本是3.0或更高版本,提倡使用

使用者可以長按或者複選框,可綁定ListView和GreadView;

            ①implement ActionMode.Callback介面,在介面中可處理操作功能表actionbar,並響應單擊事件,

            在onCreateAcionMode 載入操作功能表 

               MenuInflater inflater = mode.getMenuInflater();

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

           onPrepareActionMode

           在onActionItemClicked 中處理事件    switch(item.getItemId()){case R.id.case:  mode.finish(); break }

           在onDestroyActionMode中銷毀 mActionMode = null;  

           在listView添加onItemLongClickListener 在內部  if (mActionModo!=null){

                    return false;

            };  mActionMode =startActionMode( callback );

                view.setSelected(true);

                rerurn true;

          

            

③Popup Menu(快顯功能表):

快顯功能表可以固定在某個目的Viwe下面,如果view下面有空間的情況下。

        API 11 或者更高

        ①在xml定一個菜單

        ②執行個體化菜單需要內容物件和一個View去固定菜單在哪裡

        ③使用MenuInflater填充菜單,如果API是14 可以使用PopuMenu.inflate() ;

例如:

       <Button  ...

         android : onClick="showPopup"    

        />

        public void showPoput(View v){

        PubuMenu PopupMenu = new PopuMenu(this, view);

        pupuMenu.getMenuInflater().inflate( Menu.menu.main,popuMenu.getMenu());

        popupMenu.show();

        }

    

        <mennu

                <item :id @+id /"open" />

        >


 


android菜單簡易筆記

聯繫我們

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