android菜单和对话栏,Android回顾--(十一) 菜单和对话框
選擇菜單(OptionsMenu)
第一種使用方式:
在res目錄下面建立一個(gè)名稱(chēng)是menu的文件夾
在menu下面建立一個(gè)xml文件(默認(rèn)就是menu的類(lèi)型)
在建立的這個(gè)xml文件夾中添加菜單的選項(xiàng),xml文件中有很多屬性
android:orderInCategory = "2" //表示當(dāng)前的item在整個(gè)item中所占的位置,數(shù)字越小越靠前
android:title="選項(xiàng)二" //確定的是那個(gè)選項(xiàng)的內(nèi)容
android:id="@+id/select_02" //可以跟當(dāng)前的選項(xiàng)整一個(gè)id 方便區(qū)分點(diǎn)擊的是誰(shuí)
android:icon="@drawable/ic_launcher" //給這個(gè)選項(xiàng)整了一個(gè)圖標(biāo)
android:showAsAction = "always" //表示總是將圖標(biāo)顯示在標(biāo)題欄上的右邊,不管大小都要顯示
在Activity里面重寫(xiě)onCreateOptionsMenu方法
通過(guò)getMenuInflater()的布局加載器來(lái)加載文件
getMenuInflater().inflate(R.menu.option_menu_01, menu) //后面的第二個(gè)menu參數(shù)表示的意思是將前面的menu布局加載到后面的menu對(duì)象中去
第二種方式
在Activity默認(rèn)重寫(xiě)的onCreateOptionsMenu方法中通過(guò)menu對(duì)象的add方法來(lái)添加item的值。
menu.add(" "); //添加選項(xiàng)的內(nèi)容
menu.add(groupId,ItemId,orderInCategory,title); //第一個(gè)參數(shù):表示的是組的id 第二個(gè)表示的是 item的Id 第三個(gè)參數(shù):Item的排列順序 第四個(gè)參數(shù):當(dāng)前Item的內(nèi)容
在item里面添加子菜單
menu.addSubMenu(groupId,ItemId,orderInCateGory,title);//注意,這個(gè)方法只是獲取添加子菜單的對(duì)象,需要拿到對(duì)象之后進(jìn)行添加。
SubMenu subMenu = menu.add("設(shè)置");
subMenu.add(1,1,1,"身高設(shè)置");
subMenu.add(1,2,1,"體重設(shè)置");
SubMenu subMenu1 = menu.add("中國(guó)");
subMenu1.add(2,1,1,"四川");
subMenu1.add(2,2,1,"成都");
菜單事件的監(jiān)聽(tīng)
第一種玩法:直接重寫(xiě)onOptionsItemSelected(MenuItem item)
第二種玩法:必須要通過(guò)Java代碼創(chuàng)建menu才可以
menu.add(); 返回的是menuItem對(duì)象
menuItem.setOnMenuItemClickListener(MenuItem item)
選項(xiàng)菜單依賴的對(duì)象是Activity,不能依賴View
上下文菜單
上下文菜單依賴的對(duì)象就是View.也就是說(shuō)我們可以觸發(fā)某一個(gè)控件從而來(lái)顯示一個(gè)菜單選項(xiàng)。
使用方式:
和選項(xiàng)菜單一樣在menu文件夾下建立一個(gè)Android.xml file來(lái)進(jìn)行配置就可以了
重寫(xiě)Activity里面的onCreateContextMenu方法
注冊(cè)在控件上面彈出一個(gè)上下文菜單registerForContextMenu(button) 后面的參數(shù)表示的是綁定的View
注意:上下文菜單的事件觸發(fā)是一個(gè)長(zhǎng)按事件
上下文菜單的事件處理 和菜單事件的監(jiān)聽(tīng)一樣
PopupMenu的使用
PopuMenu popuMenu = new PopuMenu(PopuViewActivity.this,v); //初始化PopuMenu對(duì)象,第二個(gè)參數(shù)表示將PopuMenu綁定在這個(gè)控件上面
popuMenu.getMenuInflater().inflate(R.menu.option,popuMenu.getMenu()); // 綁定布局的對(duì)象
popuMenu.setOnMenuItemClickListener(new MyOnMenuListener()); //設(shè)置點(diǎn)擊事件
popuMenu.setOnDismissListener(new MyOnDissLisener()); //設(shè)置消失的時(shí)候的監(jiān)聽(tīng)器
popuMenu.show(); //顯示PopuMenu
popuMenu.dismiss(); // 取消顯示popuMenu
ContentMenu和PopuMenu的區(qū)別:
上下文菜單只能綁定一個(gè)View來(lái)進(jìn)行顯示
PopuMenu能夠同時(shí)綁定多個(gè)View來(lái)進(jìn)行顯示
PopuWindow的使用
// 1、初始化PopuWindow對(duì)象
PopuWindow popuWindow = new PopuWindow(PopuWindowActivity.this);
// 2、通過(guò)PopuWindow對(duì)象來(lái)對(duì)PopuWindow對(duì)象添加相應(yīng)的設(shè)置
popupWindow.setHeight(LayoutParams.WRAP_CONTENT);
popupWindow.setWidth(LayoutParams.WRAP_CONTENT);
popupWindow.setBackgroundDrawable(new ColorDrawable(0x00000000)); // 用來(lái)解決彈出框不消失的問(wèn)題,一般不需要設(shè)置就會(huì)消失
popupWindow.setFocusable(true); // 獲取焦點(diǎn)
popupWindow.setOutsideTouchable(true); // 表示點(diǎn)擊彈出框以外的區(qū)域是否消失,如果為true就消失,false就不消失
popupWindow.setTouchable(true); //一般不設(shè)置,采用默認(rèn)的就OK了
// 3、通過(guò)布局加載器的對(duì)象將xml文件轉(zhuǎn)換成View對(duì)象
LayoutInflater inflater = getLayoutInflater();
inflater.inflate(R.layout.popuwindow_list,null);
// 4、將獲取到的View添加到PopuWindow中
popupWindow.setContentView(view);
// 5、確認(rèn)這個(gè)PopuWindow顯示的位置
popupWindow.showAsDropDown(v); // 這個(gè)方法在使用的時(shí)候,需要多加注意。popupwindow會(huì)在button的下面貼button的底部展示出來(lái),但是當(dāng)button底部到屏幕底部的高度小于popupwindow的高度時(shí),popupwindow就會(huì)找button的父view作為參考點(diǎn),如果也沒(méi)有符合的parent view ,popupwindow就會(huì)使自己的底部貼button的頂部展示
popupWindow.showAtLocation(getWindow().getDecorView(),Gravity.NO_GRAVITY,50,0);
popuWindow.dismiss();
對(duì)話框的寫(xiě)法
// 1、初始化對(duì)話框的Builder
AlertDialog.Builder builder=new Builder(DialogActivity.this);
// 2、通過(guò)Builder來(lái)設(shè)置相應(yīng)的信息
builder.setTitle("喜歡與否"); //設(shè)置的是那個(gè)標(biāo)題
builder.setIcon(R.drawable.ic_launcher); //設(shè)置的是那個(gè)圖標(biāo)
builder.setMessage("比是否喜歡我?"); //設(shè)置的是那個(gè)信息
// 3、顯示出來(lái)
builder.show();
總結(jié)
以上是生活随笔為你收集整理的android菜单和对话栏,Android回顾--(十一) 菜单和对话框的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: NVIDIA发布轻薄笔记本显卡MX550
- 下一篇: android 带弧形背景,[Andro