0
我想在長時間點擊地圖時創建一個彈出窗口,下面是我的代碼和popup.xml: 但是popupwindow沒有出現,並且Log
表明窗口正在顯示。此外,Constructor
和showAtLocation
函數有很多版本,我不清楚它們之間的區別。有人可以在我的代碼中找到錯誤嗎?非常感謝你!如何在MapLongClickListener上彈出窗口?
private void init()
{
mGMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
.getMap();
if(mGMap != null)
{
mGMap.setMyLocationEnabled(true);
mGMap.getUiSettings().setMyLocationButtonEnabled(true);
mGMap.getUiSettings().setRotateGesturesEnabled(true);
mGMap.getUiSettings().setCompassEnabled(true);
mGMap. setOnMapLongClickListener (new GoogleMap.OnMapLongClickListener(){
@Override
public void onMapLongClick(LatLng point) {
// TODO Auto-generated method stub
View popup_view = getLayoutInflater().inflate(R.layout.popup, null);
PopupWindow popupWindow = new PopupWindow(popup_view);
View parent = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getView();
WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
@SuppressWarnings("deprecation")
int xoff = windowManager.getDefaultDisplay().getWidth()/2 - popupWindow.getWidth()/2;
// 使其聚集
popupWindow.setFocusable(true);
// 設置允許在外點擊消失
popupWindow.setOutsideTouchable(false);
popupWindow.showAtLocation(parent, Gravity.CENTER, xoff, 0);
if(popupWindow.isShowing()){
Log.i(mainActivity.toString(), "pop up is showing");
}
popupWindow.update();
}
});
}
而下面是我popup.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<TextView
android:id="@+id/location_time_tag"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:text="@string/loc_date" />
<ListView
android:id="@+id/listview_diary"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_alignParentLeft="true"
android:smoothScrollbar="true"
android:layout_below="@id/location_time_tag">
</ListView>
<EditText
android:id="@+id/add_note"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/listview_diary"
android:layout_alignParentLeft="true"
/>
<Button
android:id="@+id/add_text_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/add_note"
android:layout_alignParentLeft="true"
android:text="寫日記"/>
<Button
android:id="@+id/del_text_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@id/add_text_btn"
android:layout_alignParentRight="true"
android:text="刪日記"/>
</RelativeLayout>
我試過'MainActivity',彈出窗口仍然沒有顯示。可能這不是問題... – Flybywind
確定比添加窗口後在代碼中嘗試mapview.invalidate(),因爲在添加任何查看對象之後必須重繪地圖。 –
我將上下文更改爲'MapFragment.getActivity()';最重要的是,我忘了'setHeight()'和'setWidth()',問題解決了。感謝您的幫助。 – Flybywind