Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 显示对话框,并且仍然能够在主布局中执行操作_Android_Android Layout_Android Alertdialog - Fatal编程技术网

Android 显示对话框,并且仍然能够在主布局中执行操作

Android 显示对话框,并且仍然能够在主布局中执行操作,android,android-layout,android-alertdialog,Android,Android Layout,Android Alertdialog,我已经创建了一个悬停对话框来显示给用户,但是我想知道是否有可能显示一个对话框,并且仍然能够在对话框外部执行操作 提前感谢您的帮助!:D 这是我的主要活动: mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() { @Override public void onMapClick(LatLng point) { if(cl

我已经创建了一个悬停对话框来显示给用户,但是我想知道是否有可能显示一个对话框,并且仍然能够在对话框外部执行操作

提前感谢您的帮助!:D

这是我的主要活动:

  mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
                @Override
                public void onMapClick(LatLng point) {
                    if(clicked)
                    {
                        List<Address> addresses = new ArrayList<>();
                        try {
                            addresses = geocoder.getFromLocation(point.latitude, point.longitude,1);
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                        android.location.Address address = addresses.get(0);
                        if (address != null) {
                            StringBuilder sb = new StringBuilder();
                            for (int i = 0; i < address.getMaxAddressLineIndex(); i++){
                                sb.append(address.getAddressLine(i) + " ");
                            }

                            dialog = new Dialog(context);
                            dialog.setContentView(R.layout.map_dialog);
                            dialog.setTitle("IS THIS YOUR LOCATION?");
                            dialog.setCancelable(true);
                            dialog.setCanceledOnTouchOutside(false);

                            text = (TextView) dialog.findViewById(R.id.textLocations);

                            text.setText(sb.toString());

                            dialog.show();

                            Window window = dialog.getWindow();
                            WindowManager.LayoutParams params = window.getAttributes();
                            params.gravity = Gravity.BOTTOM;
                             window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
                            window.setAttributes(params);
                        }
                        mMap.clear();
                        mMap.addMarker(new MarkerOptions().position(point).draggable(false));
                        mMap.moveCamera(CameraUpdateFactory.newLatLng(point));
                    }
                }
            });
mMap.setOnMapClickListener(新的GoogleMap.OnMapClickListener(){
@凌驾
公共空区(停车点){
如果(单击)
{
列表地址=新的ArrayList();
试一试{
地址=地理编码器.getFromLocation(点.纬度,点.经度,1);
}捕获(IOE异常){
e、 printStackTrace();
}
android.location.Address=地址.get(0);
if(地址!=null){
StringBuilder sb=新的StringBuilder();
对于(int i=0;i
只做一件事

dialog.setCancelable(false);

我曾经做过类似的事情(或者说我试着去做)。您可以
覆盖
您的
对话框
dispatchTouchEvent(事件)
,并将事件传递给
活动
dispatchTouchEvent(事件)
。虽然这确实提供了一种用户体验,我可以在
对话框下的
视图中获得触摸事件。我无法在
ListView
s和
GridView
s上获取
OnItemClick()
回调,即使我可以滚动。点击、滚动等操作在我的应用程序拥有的所有其他
视图上都有效

因此,只需在
对话框中获取对
活动的引用
,并传递事件即可

@Override
dispatchTouchEvent(MotionEvent event) {
    activity.dispatchTouchEvent(event);
}

请参考:@shadygoneinsane先生您的答案是正确的,谢谢您的链接。我真的很感激:请在你的回答中添加一些解释。事实上,先生。如果我这样做,它不仅不会使对话框关闭,但我真正想问的是,即使对话框正在显示,我也能够操纵对话框后面的一切,先生:D但是谢谢您的帮助,先生!先生,我找到了解决办法,使对话成为模态。但是因为我能够在背景中操作东西,所以当我现在移动它时,地图会滞后。这是另一个问题,哈哈。不过还是谢谢你的帮助先生:D