在我的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();
但是问题是我的视图显示如下:
但是我的xml预览Dialog
如下:
因此,使用上面的代码,我无法使背景变暗并使焦点保持在主要活动上,但是我如何才能Dialog
像在XML预览中一样使外观出现在应用程序中?因为除了Dialog
背景之外,它还不完全位于视图的底部。另外,我将如何onTouchListener
在对话框中添加一个,以便用户可以单击以将其关闭?作为奖励,我将如何对动画Dialog
进行自下而上的显示?
谢谢,牛顿
编辑#1:
在列表视图中显示对话框时,使用标志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);
第二个,重力到底部:
WindowManager.LayoutParams wlp = window.getAttributes();
wlp.gravity = Gravity.BOTTOM;
第三名(取消与外界的接触):
progressDialog.setCanceledOnTouchOutside(true);
同样,如果您设置了标志然后清除了标志,则将不会进行设置。
第四题(动画从底部开始):
看一下这个答案,我可以看到您是一名iOS开发人员,因此它的工作方式就像iOS操作表从底部滑动到中心一样。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句