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就像:

因此,使用上面的代码,我无法调暗背景并保持焦点与主要活动,但我怎样才能Dialog在应用程序中显示就像在xml预览中一样?因为除了Dialog背景,它不完全在视图的底部.另外,我如何添加一个onTouchListener对话框,以便用户可以点击以解除它?作为奖励,我如何动画Dialog从下往上显示?
谢谢,牛顿
编辑#1:
在ListView中显示Dialog时,使用标志FLAG_NOT_TOUCH_MODAL可能会导致一些问题,因此请将其更改为FLAG_NOT_FOCUSABLE.
这是很多问题,我会回答第一个问题:
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动作表从底部滑动到中心.
| 归档时间: |
|
| 查看次数: |
3061 次 |
| 最近记录: |