前言
在QQ的消息列表中,我们长按某条消息,则可出现对该消息进行处理的菜单,我们简单模拟一下。
1.布局文件
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>
main.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="cn.sehzh.contextmenutester.MainActivity" >
<item
android:id="@+id/addItem"
android:title="增加">
</item>
<item
android:id="@+id/editItem"
android:title="修改">
</item>
<item
android:id="@+id/deleteItem"
android:title="删除">
</item>
</menu>
2 MainActivity
package cn.sehzh.contextmenutester;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MainActivity extends Activity {
private static final String TAG = "MYTAG";
private ListView mListView;
private List<String> mList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mList.add("hzh");
mList.add("qwe");
mList.add("asd");
mListView = (ListView) findViewById(R.id.listView);
ArrayAdapter<String> adapter;
adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, mList);
mListView.setAdapter(adapter);
registerForContextMenu(mListView);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater;
inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.addItem:
Log.i(TAG, "add...");
break;
case R.id.editItem:
Log.i(TAG, "edit...");
break;
case R.id.deleteItem:
Log.i(TAG, "delete...");
break;
default:
break;
}
return super.onContextItemSelected(item);
}
}
3.实现效果