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