2025-05-17

ContextMenu上下文菜單,和電腦上單擊鼠標右鍵出現的快捷菜單等同,即安卓中長按某項(2秒左右)出現的快捷菜單,

ContextMenu上下文菜單創建方法:

1.重寫Activity的onCreateContextMenu()方法,調用Menu的add方法添加菜單項
2.重寫onContextItemSelected()方法,響應菜單單擊事件
3.調用registerForContexMenu()註冊上下文菜單

main.xml

[html] <?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
        <ListView android:id="@+id/listView"   
        android:layout_width="fill_parent"   
        android:layout_height="wrap_content"/>    
</RelativeLayout> 
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
        <ListView android:id="@+id/listView" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"/>  
</RelativeLayout>TestActivity.java

[java] public class TestActivity extends Activity { 
    ListView listView; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
        listView=(ListView)findViewById(R.id.listView); 
        //為listView註冊上下文菜單ContextMenu  
        //方法1  
        this.registerForContextMenu(listView); 
        //方法2  
        //listView.setOnCreateContextMenuListener(this);  
        String [] s={"特凡·薩爾瓦托 Stefan Salvatore", 
                "艾琳娜·吉爾伯特 Elena Gilbert", 
                "達蒙·薩爾瓦托 Damon Salvatore", 
                "傑裡米·吉爾伯特 Jeremy Gilbert", 
                "卡羅琳·福佈斯 Caroline Forbes"}; 
        ArrayAdapter aa=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,s); 
        listView.setAdapter(aa); 
    } 
     
    //創建上下文菜單  
    @Override 
    public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo mi) { 
        menu.setHeaderTitle("你猜啊~ 0,0");  
        //配置上下文菜單選項    
        menu.add(0, Menu.FIRST +1, 1, "海賊王"); 
        menu.add(0, Menu.FIRST +2, 2, "暮光之城"); 
        menu.add(0, Menu.FIRST +3, 3, "吸血鬼日記"); 
        menu.add(0, Menu.FIRST +4, 4, "齊天大聖"); 
        //super.onCreateContextMenu(menu, v, mi);  
    } 
    //響應上下文菜單的點擊事件  
    @Override   
    public boolean onContextItemSelected(MenuItem item) { 
        if(item.getItemId()==Menu.FIRST + 3){ 
            Toast.makeText(this, "ORZ,你聰明屎啦!", Toast.LENGTH_SHORT).show(); 
        }else{ 
            Toast.makeText(this, "這有個毛聯系!", Toast.LENGTH_SHORT).show(); 
        } 
        return super.onContextItemSelected(item); 
    } 

public class TestActivity extends Activity {
 ListView listView;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        listView=(ListView)findViewById(R.id.listView);
        //為listView註冊上下文菜單ContextMenu
        //方法1
        this.registerForContextMenu(listView);
        //方法2
        //listView.setOnCreateContextMenuListener(this);
        String [] s={"特凡·薩爾瓦托 Stefan Salvatore",
          "艾琳娜·吉爾伯特 Elena Gilbert",
          "達蒙·薩爾瓦托 Damon Salvatore",
          "傑裡米·吉爾伯特 Jeremy Gilbert",
          "卡羅琳·福佈斯 Caroline Forbes"};
        ArrayAdapter aa=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,s);
        listView.setAdapter(aa);
    }
   
    //創建上下文菜單 www.aiwalls.com
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo mi) {
        menu.setHeaderTitle("你猜啊~ 0,0");
        //配置上下文菜單選項 
        menu.add(0, Menu.FIRST +1, 1, "海賊王");
        menu.add(0, Menu.FIRST +2, 2, "暮光之城");
        menu.add(0, Menu.FIRST +3, 3, "吸血鬼日記");
        menu.add(0, Menu.FIRST +4, 4, "齊天大聖");
        //super.onCreateContextMenu(menu, v, mi);
    }
    //響應上下文菜單的點擊事件
    @Override 
    public boolean onContextItemSelected(MenuItem item) {
     if(item.getItemId()==Menu.FIRST + 3){
      Toast.makeText(this, "ORZ,你聰明屎啦!", Toast.LENGTH_SHORT).show();
     }else{
      Toast.makeText(this, "這有個毛聯系!", Toast.LENGTH_SHORT).show();
     }
     return super.onContextItemSelected(item);
    }
}
  
 

 

摘自  柒尐狐的專欄 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *