Android 显示对话框,并且仍然能够在主布局中执行操作
我已经创建了一个悬停对话框来显示给用户,但是我想知道是否有可能显示一个对话框,并且仍然能够在对话框外部执行操作 提前感谢您的帮助!:D 这是我的主要活动: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
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