翻了很多帖 加了权限仍然不好用的看过来~~~最后的解决方案记录一下
下面是view的长按点击事件:(实现长按控件弹出弹窗)
holder.view.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
alertDialog = new AlertDialog.Builder(context).create();//new dialog
//····↓····
if (Build.VERSION.SDK_INT >= 25) {
alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY);
}else {
alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
}
//····↑·····
showalertDialog();//dialog的show函数
return true;
}
});
下面是dialog的show函数:
public void showalertDialog() {
alertDialog.setTitle("标题");
alertDialog.setMessage("具体文本");
alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "否", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
System.out.println("否");
}
});
alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "是", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
System.out.println("是");
}
});
alertDialog.show();
}
上述部分重点代码就是
//····↓···
if (Build.VERSION.SDK_INT >= 25) {
alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY);
}else {
alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
}
//····↑·····