一起学Android之Menu
概述
菜單(Menu)在Android開發(fā)中,是一種常見的用戶界面組件,通過使用菜單Api可以給用戶提供常見的一致的體驗(yàn)。本文主要講解三種菜單的相關(guān)內(nèi)容。
菜單的分類
- 選項(xiàng)菜單(OptionsMenu):選項(xiàng)菜單是活動(dòng)菜單項(xiàng)的主要集合,主要應(yīng)用于App上有全局影響的功能,如:搜索,設(shè)置等。
- 上下文菜單(ContextMenu):上下文菜單是一個(gè)浮動(dòng)菜單,當(dāng)用戶在元素上進(jìn)行長(zhǎng)時(shí)間單擊時(shí)會(huì)出現(xiàn)。它提供了影響選定內(nèi)容或上下文框架的操作。
- 彈出菜單(PopupMenu):彈出菜單主要應(yīng)用于列表中的列表項(xiàng),彈出菜單錨定在調(diào)用菜單的視圖控件上。
涉及知識(shí)點(diǎn)
- registerForContextMenu 注冊(cè)上下文菜單方法。
- getMenuInflater() 獲取菜單填充對(duì)象,通過資源文件實(shí)例化菜單對(duì)象。
- popupMenu.getMenu 獲取菜單對(duì)象
選項(xiàng)菜單(OptionsMenu)
通過重寫Activity中的onCreateOptionsMenu 方法,來設(shè)置選項(xiàng)菜單;通過重寫onOptionsItemSelected方法來處理選項(xiàng)菜單的事件功能。
如下圖所示:選項(xiàng)菜單位于App的左上角的三個(gè)白色圓點(diǎn)顯示,當(dāng)點(diǎn)擊時(shí)彈出菜單內(nèi)容。
關(guān)鍵代碼如下:
1 /** 2 * onCreateOptionsMenu重寫方法用于創(chuàng)建選項(xiàng)菜單 3 * 可以通過資源文件進(jìn)行創(chuàng)建,也可以通過代碼進(jìn)行創(chuàng)建。 4 * 返回值,如果是true則顯示菜單,如果是false則不顯示菜單 5 */ 6 @Override 7 public boolean onCreateOptionsMenu(Menu menu) { 8 MenuInflater inflater = getMenuInflater(); 9 inflater.inflate(R.menu.options_menu,menu); 10 return true; 11 } 12 13 /** 14 * 選項(xiàng)菜單,選中事件處理方法 15 */ 16 @Override 17 public boolean onOptionsItemSelected(MenuItem item) { 18 switch (item.getItemId()){ 19 case R.id.m_search : 20 Toast.makeText(MainActivity.this,"查找",Toast.LENGTH_SHORT).show(); 21 break; 22 case R.id.m_setting : 23 Toast.makeText(MainActivity.this,"設(shè)置",Toast.LENGTH_SHORT).show(); 24 break; 25 default: 26 break; 27 } 28 return true; 29 }下文菜單(ContextMenu)
通過重寫Activity中的onCreateContextMenu方法來設(shè)置上下文菜單,通過重寫onContextItemSelected方法來處理上下文菜單的事件。
如下圖所示,通過長(zhǎng)按控件,就可以彈出上下文菜單。
關(guān)鍵代碼如下:
1 /** 2 * 上下文菜單,通過資源文件設(shè)置上下文菜單 3 */ 4 @Override 5 public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { 6 getMenuInflater().inflate(R.menu.context_menu,menu); 7 } 8 9 /** 10 * 上下文菜單響應(yīng)事件 11 * @param item 12 * @return 13 */ 14 @Override 15 public boolean onContextItemSelected(MenuItem item) { 16 switch (item.getItemId()){ 17 case R.id.get_width: 18 Toast.makeText(MainActivity.this,"寬度="+tvContent.getWidth(),Toast.LENGTH_SHORT).show(); 19 break; 20 case R.id.get_height: 21 Toast.makeText(MainActivity.this,"高度="+tvContent.getHeight(),Toast.LENGTH_SHORT).show(); 22 break; 23 default: 24 break; 25 } 26 return true; 27 }上下文菜單需要通過注冊(cè)到指定的控件上才可以
1 //為控件注冊(cè)上下文菜單,一般用于GridView和ListView中 2 registerForContextMenu(tvContent);彈出菜單(PopupMenu)
通過PopupMenu popupMenu=new PopupMenu(this,v)的方式,聲明彈出菜單。其中第二個(gè)參數(shù),是菜單錨定的控件,即菜單停靠在哪個(gè)控件上。
如下圖所示:點(diǎn)擊按鈕時(shí)彈出菜單
關(guān)鍵代碼如下,調(diào)用show()方法顯示菜單:
1 /** 2 * 3 * @param v 控件本身 4 */ 5 public void btnFontClick(View v){ 6 //第二個(gè)參數(shù)是Anchor表示菜單停靠點(diǎn) 7 PopupMenu popupMenu=new PopupMenu(this,v); 8 getMenuInflater().inflate(R.menu.popumenu,popupMenu.getMenu()); 9 popupMenu.show(); 10 //設(shè)置監(jiān)聽事件 11 popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { 12 @Override 13 public boolean onMenuItemClick(MenuItem item) { 14 switch (item.getItemId()){ 15 case R.id.m_add: 16 fontSize=fontSize+5; 17 break; 18 case R.id.m_sub: 19 if(fontSize<=10) { 20 Toast.makeText(MainActivity.this,"字體大小最小為10",Toast.LENGTH_SHORT).show(); 21 }else{ 22 fontSize = fontSize - 5; 23 } 24 break; 25 } 26 tvContent.setTextSize(fontSize); 27 return false; 28 } 29 }); 30 }備注
菜單項(xiàng)的功能應(yīng)用場(chǎng)景有很多,本文旨在拋磚引玉,共同學(xué)習(xí)。
轉(zhuǎn)載于:https://www.cnblogs.com/hsiang/p/10568889.html
總結(jié)
以上是生活随笔為你收集整理的一起学Android之Menu的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据库3(DBUtils)
- 下一篇: 美团支付平台产品规划