点击列表从底部弹出自定义窗体,弹出窗体时背景半透明,窗体关闭,恢复透明状态。
弹出菜单种类:系统菜单OptionsMenu,系统只有一个系统菜单
ContextMenu上下文菜单:
需要为控件添加长按属性并将菜单绑定到这个控件上registerForContextMenu(控件)
步骤比系统菜单多一项
PoupMenu:弹出菜单
创建对象,加载布局,点击事件,显示弹出菜单
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
contextMenu = findViewById(R.id.contextMenu);
popupMenu = findViewById(R.id.popupMenu);
popupWindow = findViewById(R.id.popupWindow);
registerForContextMenu(contextMenu);
popupMenu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
PopupMenu popupMenu1 = new PopupMenu(MainActivity.this,popupMenu);
popupMenu1.inflate(R.menu.menu);
popupMenu1.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
switch (menuItem.getItemId()){
case R.id.add:
Toast.makeText(MainActivity.this,"添加好友",Toast.LENGTH_SHORT).show();
break;
case R.id.money:
Toast.makeText(MainActivity.this,"付款码",Toast.LENGTH_SHORT).show();
break;
case R.id.search:
Toast.makeText(MainActivity.this,"扫一扫",Toast.LENGTH_SHORT).show();
break;
}
return false;
}
});
popupMenu1.show();
}
});
popupWindow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
popupWindow(popupWindow);
}
});
}
private void popupWindow(TextView popupWindow) {
//实例化对象
final PopupWindow window = new PopupWindow(this);
window.setWidth(WindowManager.LayoutParams.MATCH_PARENT);
window.setHeight(200);
window.setOutsideTouchable(true);
View view = LayoutInflater.from(this).inflate(R.layout.window,null);
TextView cancel = view.findViewById(R.id.window_tv3);
cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
window.dismiss();
}
});
window.setContentView(view);
//设置窗体背景半透明
WindowManager.LayoutParams attributes = getWindow().getAttributes();
attributes.alpha = 0.5f;
getWindow().setAttributes(attributes);
window.setOnDismissListener(new PopupWindow.OnDismissListener() {
@Override
public void onDismiss() {
WindowManager.LayoutParams attributes1 = getWindow().getAttributes();
attributes1.alpha = 1f;
getWindow().setAttributes(attributes1);
}
});
//设置窗体背景
window.setBackgroundDrawable(getResources().getDrawable(R.drawable.shape));
window.showAtLocation(popupWindow, Gravity.BOTTOM,0,0);
}
@Override
public boolean onContextItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()){
case R.id.add:
Toast.makeText(MainActivity.this,"添加好友",Toast.LENGTH_SHORT).show();
break;
case R.id.money:
Toast.makeText(MainActivity.this,"付款码",Toast.LENGTH_SHORT).show();
break;
case R.id.search:
Toast.makeText(MainActivity.this,"扫一扫",Toast.LENGTH_SHORT).show();
break;
}
return super.onContextItemSelected(item);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
getMenuInflater().inflate(R.menu.menu,menu);
super.onCreateContextMenu(menu, v, menuInfo);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu,menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()){
case R.id.add:
Toast.makeText(MainActivity.this,"添加好友",Toast.LENGTH_SHORT).show();
break;
case R.id.money:
Toast.makeText(MainActivity.this,"付款码",Toast.LENGTH_SHORT).show();
break;
case R.id.search:
Toast.makeText(MainActivity.this,"扫一扫",Toast.LENGTH_SHORT).show();
break;
}
return super.onOptionsItemSelected(item);
}