在我的 Android 应用程序中,我想在任何 Activity 之上显示一个视图,并且仍然专注于该 Activity。我实际上用Dialog
下面的代码解决了这个问题:
Dialog progressDialog = new Dialog(getThisContext());
progressDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
progressDialog.setContentView(R.layout.hint_view_layout);
TextView theText = (TextView) progressDialog.findViewById(R.id.hintText);
theText.setText("(Some Text)");
Window window = progressDialog.getWindow();
window.setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
window.setGravity(Gravity.BOTTOM);
progressDialog.show();
但问题是我的视图显示如下:
但是我的 xml 的预览Dialog
是这样的:
因此,使用上面的代码,我能够不使背景变暗并保持焦点与主要活动,但我怎样才能Dialog
像在 xml 预览中一样出现在应用程序中?因为除了Dialog
背景之外,它并不完全位于视图的底部。另外,我如何onTouchListener
在对话框中添加一个,以便用户可以单击以将其关闭?作为奖励,我将如何设置动画Dialog
以自下而上出现?
谢谢,牛顿
编辑#1:
在 ListView 中显示 Dialog 时,使用标志 FLAG_NOT_TOUCH_MODAL 可能会导致一些问题,因此请将其更改为 FLAG_NOT_FOCUSABLE。