自定义对话框没有焦点

new*_*ima 2 android dialog android-activity

在我的Android应用程序中,我希望在任何活动的基础上显示视图,并且仍然关注活动.我实际上使用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();
Run Code Online (Sandbox Code Playgroud)

但问题是我的观点如下:

出现为

但我的xml预览Dialog就像:

xml预览

因此,使用上面的代码,我无法调暗背景并保持焦点与主要活动,但我怎样才能Dialog在应用程序中显示就像在xml预览中一样?因为除了Dialog背景,它不完全在视图的底部.另外,我如何添加一个onTouchListener对话框,以便用户可以点击以解除它?作为奖励,我如何动画Dialog从下往上显示?

谢谢,牛顿

编辑#1:

在ListView中显示Dialog时,使用标志FLAG_NOT_TOUCH_MODAL可能会导致一些问题,因此请将其更改为FLAG_NOT_FOCUSABLE.

Dyn*_*yna 5

这是很多问题,我会回答第一个问题:

Dialog progressDialog = new Dialog(getThisContext());
progressDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
progressDialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); //You have to put your background window transparent. 
progressDialog.setContentView(R.layout.hint_view_layout);
Run Code Online (Sandbox Code Playgroud)

第二个,重力到底:

WindowManager.LayoutParams wlp = window.getAttributes();
wlp.gravity = Gravity.BOTTOM;
Run Code Online (Sandbox Code Playgroud)

第三个(外面取消):

progressDialog.setCanceledOnTouchOutside(true);
Run Code Online (Sandbox Code Playgroud)

此外,如果您设置了标志,然后清除了标记,则不会设置它们.

第四个问题(从底部开始动画):

看看这个答案,我可以看到你是一个iOS开发人员,所以这就像iOS动作表从底部滑动到中心.