PopupWindow弹窗
步骤
1、自定义一个xml文件,在xml内写要展示的内容
2、把代码封装到showPopupWindow()内,
public void show_popuwindow(){
PopupWindow popupWindow = new PopupWindow(this);
View view= LayoutInflater.from(MainActivity.this).inflate(R.layout.layout_item,null);
//把布局设置给弹窗
popupWindow.setContentView(view);
popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
popupWindow.setWidth(600);
//点击外部消失
popupWindow.setOutsideTouchable(true);
//设置此参数获得焦点,否则无法点击
popupWindow.setFocusable(true);
//在谁下面显示,第一个参数写谁
// popupWindow.showAsDropDown(textView,100,100);
popupWindow.showAtLocation(view, Gravity.CENTER,100,100);
}’
3、在监听事件添加showPopupWindow()
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
show_popuwindow();
}
});
系统菜单OptionsMenu
重写onCreateOptionsMenu(),在这个方法添加菜单内容,在监听里面根据itemID分辨功能
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(1,4,4,"红色").setIcon(R.drawable.a);
menu.add(1,5,1,"蓝色").setIcon(R.drawable.a);
menu.add(1,6,3,"黑色").setIcon(R.drawable.a);
menu.add(1,7,2,"黄色").setIcon(R.drawable.a);
SubMenu sm = menu.addSubMenu("子菜单");
sm.add(1,15,1,"子菜单");
menu.addSubMenu(1,2,3,"子菜单1");
menu.addSubMenu(1,3,1,"子菜单2");
menu.addSubMenu(1,1,5,"子菜单3");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case 1:
Toast.makeText(this, "菜单3", Toast.LENGTH_SHORT).show();
break;
case 2:
Toast.makeText(this, "菜单1", Toast.LENGTH_SHORT).show();
break;
case 3:
Toast.makeText(this, "菜单2", Toast.LENGTH_SHORT).show();
break;
case 4:
textView.setTextColor(Color.RED);
break;
case 5:
textView.setTextColor(Color.BLUE);
break;
case 6:
textView.setTextColor(Color.BLACK);
break;
case 7:
textView.setTextColor(Color.YELLOW);
break;
}
上下文菜单ContextMenu
步骤
1、在新建文件夹menu内自定义menu布局xml文件,写入要展示的内容
2、重写onCreateContextMenu() 用菜单布局填充器导入自定义菜单布局
3、重写onContextItemSelected()设置监听
4、registerForContextMenu(view) 为控件添加啊长按监听并将菜单绑定到这个菜单上
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_three);
listView=findViewById(R.id.listView);
for (int i = 0; i < 30; i++) {
datalist.add(i);
}
ArrayAdapter arrayAdapter = new ArrayAdapter<>(this, R.layout.support_simple_spinner_dropdown_item, datalist);
listView.setAdapter(arrayAdapter);
//要展现出上下文菜单效果,必须注册 不能设置图片
registerForContextMenu(listView);
}
//上下文菜单
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
//菜单布局填充器
getMenuInflater().inflate(R.menu.mymenu,menu);
super.onCreateContextMenu(menu, v, menuInfo);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.item1:
Toast.makeText(this, "选项1", Toast.LENGTH_SHORT).show();
break;
case R.id.item2:
Toast.makeText(this, "选项2", Toast.LENGTH_SHORT).show();
break;
case R.id.item3:
Toast.makeText(this, "选项3", Toast.LENGTH_SHORT).show();
break;
}
return true;
}