Android 如何在屏幕上以点击点为中心显示弹出窗口?
我最近实现了一个弹出窗口,它正好显示在我点击GoogleMapv2的位置上。 我将LatLng地图位置转换为screenlocation,将重心设置为中心并显示在屏幕上。然后,在代码没有任何变化的情况下,它开始显示在点击点的上方,我不知道出了什么问题。求求你,救命!我渴望任何解决我的问题的方法,实际上我只想在地图上的点击点显示一个进度对话框 这是我的密码:Android 如何在屏幕上以点击点为中心显示弹出窗口?,android,onclick,popupwindow,gravity,Android,Onclick,Popupwindow,Gravity,我最近实现了一个弹出窗口,它正好显示在我点击GoogleMapv2的位置上。 我将LatLng地图位置转换为screenlocation,将重心设置为中心并显示在屏幕上。然后,在代码没有任何变化的情况下,它开始显示在点击点的上方,我不知道出了什么问题。求求你,救命!我渴望任何解决我的问题的方法,实际上我只想在地图上的点击点显示一个进度对话框 这是我的密码: mMap.setOnMapClickListener(new OnMapClickListener() {
mMap.setOnMapClickListener(new OnMapClickListener()
{
@Override
public void onMapClick(LatLng point)
{
View popUpView = getLayoutInflater().inflate(R.layout.popup, null);
LinearLayout layout = (LinearLayout) popUpView.findViewById(R.id.popup);
ProgressBar progressBar = new ProgressBar(MainActivity.this);
progressBar.setIndeterminateDrawable(getResources().getDrawable(R.drawable.dialog));
layout.addView(progressBar);
mpopup = new PopupWindow(popUpView, 30,30, false); //Creation of popup
mpopup.setOnDismissListener(MainActivity.this);
mpopup.setAnimationStyle(android.R.style.Animation_Dialog);
pinToScreen(point, popUpView);
}
});
}
}
private void pinToScreen(LatLng point, View popupView)
{
Projection projection = mMap.getProjection();
Point pixPoint = projection.toScreenLocation(point);
LatLng latlng=projection.fromScreenLocation(pixPoint);
DisplayMetrics dm = getResources().getDisplayMetrics();
int screenwidth = dm.widthPixels;
int screenheight = dm.heightPixels;
mpopup.showAtLocation(popupView, Gravity.CENTER,
pixPoint.x-screenwidth/2, pixPoint.y-screenheight/2;
}
R.layout.popup:
LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/popup"
android:layout_width="fill_parent"
android:orientation="vertical"
android:background="@android:color/transparent"
android:layout_height="fill_parent"
android:gravity="center"
android:layout_gravity="center">
LinearLayout>
ProgressDialog可绘制:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval"
android:visible="true"
android:innerRadius="60dp"
><solid
android:color="@color/skypicker_blue1"
/>
<stroke android:color="@color/transparent_blue2"
android:width="1dp"/>
</shape>
问题在于应用程序没有全屏显示,因此从单击的LatLng转换的屏幕点与实际屏幕点不一致,偏移量是Android上顶部面板的高度。当我让应用程序全屏显示时,它起了作用。然而,我仍然不知道如何获得Android顶部面板的高度