1.MainActivity演示用java代碼add()實現上下文菜單
2.SeccondActivity演示用XML配置方式實現上下文菜單,用按鈕跳轉到這個Activity
在Android應用程式中菜單是用戶界面中最常見的元素之一,使用非常頻繁。通常Android應用程式中的菜單默認是不可見的,只有當用戶單擊手機上的「Menu」鍵,系統才會顯示該應用關聯的菜單。所以一般的Android系統的手機都要有一個"Menu"鍵。Android主要有兩種菜單:選項菜單(OptionsMenu)和上下文菜單(Context Menu)。
上下文菜單(Context Menu)只作用於某一選項,相當於window系統中的「右鍵單擊」彈出的菜單。當用戶一直按住(Touch&Hold)某個應用的界面控制項時才會彈出此菜單,而使用物理按鍵時無法調用此功能。
Android提供了兩種創建菜單的方法,一種是在java代碼中創建,另一種是使用xml資源文件定義
一、效果圖:
二、用JAVA的add方法實現上下文菜單
頁面布局:
MainActivity代碼實現
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv=findViewById(R.id.tv);
this.registerForContextMenu(tv);
Button mybutton=findViewById(R.id.button1);
mybutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent();
intent.setClass(MainActivity.this,SecondActivity.class);
startActivity(intent);
}
});
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.add(0,0, Menu.NONE,"發送");
menu.add(0,1, Menu.NONE,"標記為重要");
menu.add(0,2, Menu.NONE,"重命名");
menu.add(0,3, Menu.NONE,"刪除");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId())
{
case 0:Toast.makeText(this,"發送事件",Toast.LENGTH_SHORT).show();
break;
case 1:Toast.makeText(this,"標記為重要事件",Toast.LENGTH_SHORT).show();
break;
case 2:Toast.makeText(this,"重命名事件",Toast.LENGTH_SHORT).show();
break;
case 3:Toast.makeText(this,"刪除事件",Toast.LENGTH_SHORT).show();
break;
}
return super.onContextItemSelected(item);
}
}
三、用JAVA的XML配置方法方法實現上下文菜單
菜單資源:
右鍵:
new->Directory,命名為menu
在menu下,new->menu resourse file,命名為contextmenu.xml
頁面布局:
SecondActivity 代碼實現:
public class SecondActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
TextView tv=findViewById(R.id.tv);
this.registerForContextMenu(tv);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
this.getMenuInflater().inflate(R.menu.contextmenu,menu);
menu.setHeaderIcon(R.mipmap.ic_launcher);
menu.setHeaderTitle("上下文菜單舉例");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId())
{
case R.id.send:Toast.makeText(this,"發送事件",Toast.LENGTH_SHORT).show();
break;
case R.id.important:Toast.makeText(this,"標記為重要事件",Toast.LENGTH_SHORT).show();
break;
case R.id.rename:Toast.makeText(this,"重命名事件",Toast.LENGTH_SHORT).show();
break;
case R.id.delete:Toast.makeText(this,"刪除事件",Toast.LENGTH_SHORT).show();
break;
}
return super.onContextItemSelected(item);
}
}