contextMenu是上下文菜單币励,我們希望實現(xiàn)這樣一種效果僵刮,點擊主界面上的一個按鈕,彈出一個上下文菜單惨险,響應上下文菜單中對應條目的點擊事件。第一種方式主要利用xml文件實現(xiàn)
實現(xiàn)代碼
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.button);
//設置上下文監(jiān)聽
button.setOnCreateContextMenuListener(this);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
view.showContextMenu();
// view.showContextMenu(x,y);
}
});
}
@Override//創(chuàng)建上下文菜單
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.context,menu);
}
@Override//上下文菜單選項事件
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.text1:
Toast.makeText(MainActivity.this,"我是1脊髓!",Toast.LENGTH_SHORT).show();
break;
case R.id.text2:
Toast.makeText(MainActivity.this,"我是2辫愉!",Toast.LENGTH_SHORT).show();
break;
case R.id.text3:
Toast.makeText(MainActivity.this,"我是3!",Toast.LENGTH_SHORT).show();
break;
}
return super.onContextItemSelected(item);
}
}
實現(xiàn)過程1将硝、找到Button控件button2恭朗、設置上下文菜單監(jiān)聽 button.setOnCreateContextMenuListener(this),也可以button.setOnCreateContextMenuListener(new onCreateContextMenuListener() {
@Override
public void onCreateContextMenu(ContextMenu contextMenu, View view, ContextMenu.ContextMenuInfo contextMenuInfo) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.context,contextMenu);
}
});,不用this代替依疼,直接實現(xiàn)onCreateContextMenu痰腮。
3、響應button的點擊事件律罢,在該事件中實現(xiàn)contextMenu的顯示膀值。
button.showContextMenu(); 4、當設置上下文監(jiān)聽時弟翘,使用的是this時虫腋,我們需要在實現(xiàn)兩個函數(shù)一個是OnCreateContextMenu,另一個是OnContextItemSelected(),函數(shù)一是創(chuàng)建上下文菜單稀余,函數(shù)二是上下文菜單選項事件悦冀。創(chuàng)建上下文菜單時,MenuInflate inflate = getMenuInflate()睛琳;inflate.inflate(R.menu.contextMenu);的作用是給ContextMenu設置布局文件盒蟆,當觸發(fā)時顯示在界面上。
R.menu.context是我們自己寫的一個布局文件师骗,其寫法是先在res中新建一個文件夾menu历等,在menu中新建一個布局文件,在這里我們起名叫context辟癌。context.xml文件中的內容如下:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/text1"
android:title="測試一" />
<item
android:id="@+id/text2"
android:title="測試二"/>
<item
android:id="@+id/text3"
android:title="測試三"/>
</menu>
item中的title就是上下文菜單所顯示的內容