转载请注明出处:ContextMenu文本菜单(右键菜单)、SubMenu子菜单_Mr_Leixiansheng的博客-CSDN博客
作用:长点击弹出文本菜单
步骤:
(一般使用在listview等)
1、创建好listview
2、重写 onCreateContextMenu(步骤和Menu一样)
3、设置文本菜单监听
代码如下:
1、界面布局mxl
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.leixiansheng.mycontextmenu.MainActivity">
<ListView
android:id="@+id/list_view"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/delete" android:title="删除" />
<item android:id="@+id/cut" android:title="剪切" />
<item android:id="@+id/copy" android:title="复制" />
<item android:id="@+id/change_name" android:title="重命名" />
</menu>
2、实现功能
package com.example.leixiansheng.mysubmenu;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private ListView listView;
private ArrayAdapter<String> adapter;
private List<String> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.list_view);
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,getDate());
listView.setAdapter(adapter);
this.registerForContextMenu(listView);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
//静态添加菜单栏条目
getMenuInflater().inflate(R.menu.menu, menu);
/**
*动态添加菜单栏条目
*/
// menu.add(int GrupId, int ItemId, Order排序, Title;)
// menu.add(1, 1, 1, "删除");
// menu.add(1, 2, 1, "剪切");
// menu.add(1, 3, 1, "复制");
// menu.add(1, 4, 1, "重命名");
menu.setHeaderIcon(R.mipmap.ic_launcher);
menu.setHeaderTitle("文本菜单");
//动态添加子菜单,也可以在xml 文件中添加《item》<menu><menu>《item》
SubMenu subMenu_1 = menu.addSubMenu("GroupId为1的子菜单");
subMenu_1.add(1, 1, 1, "GroupId为1子菜单1");
subMenu_1.add(1, 2, 1, "GroupId为1子菜单2");
SubMenu subMenu_2 = menu.addSubMenu("GroupId为2的子菜单");
subMenu_2.add(2, 1, 1, "GroupId为2子菜单1");
subMenu_2.add(2, 2, 1, "GroupId为2子菜单2");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
Toast.makeText(this, "你点击了"+item.getTitle(),Toast.LENGTH_SHORT).show();
// switch (item.getItemId()) {
// case R.id.delete:
// break;
// case R.id.cut:
// break;
// case R.id.copy:
// break;
// case R.id.change_name:
// break;
// }
return super.onContextItemSelected(item);
}
public List<String> getDate() {
list = new ArrayList<>();
for (int i = 0; i < 5; i++) {
list.add("文本" + (i + 1));
}
return list;
}
}