1.可在activity和fragment中使用。ide
2.使用方法佈局
(1)註冊spa
registerForContextMenu(btn);//btn是要實現交互的控件
(2)重寫onCreateContextMenu方法和onContextItemSelected方法(有兩種方式先講第一種)code
@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); getMenuInflater().inflate(R.menu.menu,menu); //給menu設置佈局文件,當觸發時顯示在界面上 }
@Override public boolean onContextItemSelected(MenuItem item) { //佈局文件裏面對應的id,當點擊時,根據id區別那個被點擊 switch(item.getItemId()){ caseR.id.text1: Log.i("leilei","text1"); break; caseR.id.text2: Log.i("leilei","text2"); break; caseR.id.text3: Log.i("leilei","text3"); break; } returnsuper.onOptionsItemSelected(item); }
(3)觸發條件(1 調用方法 view.showContextMenu(),2 長按(能夠和長按事件setOnLongClickListener同時觸發)。對象
//調用方法方式 btn.setOnClickListener(newView.OnClickListener() { @Override public void onClick(View v) { v.showContextMenu();//單擊直接顯示Context菜單 } });
在講講第二種方式(ContextMenu 方法)blog
@Override public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) { // TODOAuto-generated method stub menu.setHeaderIcon(R.drawable.tp_3); menu.setHeaderTitle(R.string.menuHeader01); menu.add(20, 20, 20, R.string.conTextMenu01); menu.add(20, 21, 21, R.string.conTextMenu02); super.onCreateContextMenu(menu, v, menuInfo); }
@Override public boolean onContextItemSelected(MenuItem item){ String str = ""; switch(item.getItemId()){ case 20: str = "20"; break; case 21: str = "21"; break; } Toast.makeText(getApplicationContext(),str, Toast.LENGTH_LONG).show(); return true; }
這種是用原生的進行菜單填充事件
menu.add(20, 20, 20, R.string.conTextMenu01);get
參數1:小組的標記;string
參數2:給他設置一個ID ;it
參數3:怎麼顯示位置(0,1);
參數4:文字的顯示
(4)總結
1.registerForContextMenu方法:用於爲一個View對象註冊上下文菜單,其輸入爲View對象
2.onCreateContextMenu方法:初始化上下文菜單,在須要相應上下文菜單時調用
3.onContextItemSelected方法:設置上下文中某個菜單被選中時的操做
4.onContextMenuClosed方法:用於設置當前上下文菜單被關閉時的操做,其輸入爲menu對象
by:leileitua