標籤: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菜單簡易筆記