5

我有一个 PopupWindow,当我单击地图标记时会显示。PopupWindow 允许用户更改标记的位置并选择它周围的半径。如果我将 focusable 设置为 true,我可以与 PopupWindow 交互,但不能与地图交互。而且,如果我将 focusable 设置为 false,奇怪的是,我可以在 PopupWindow 上与 SeekBar 交互,但按钮和 EditText 都没有响应,但我可以与地图交互。

问题:我怎样才能使用户可以同时与 PopupWindow 和地图进行交互?

        <LinearLayout android:layout_width="0dp" 
            android:layout_height="wrap_content" 
            android:layout_weight="1" 
            android:orientation="vertical">

            <TextView android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/event" 
                android:textAppearance="?android:attr/textAppearanceMedium" />

            <EditText android:id="@+id/markerEventNameEditText"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:ems="10"
                android:hint="@string/your_event_name"
                android:inputType="text" />

            <LinearLayout android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <TextView android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/radius"
                    android:textAppearance="?android:attr/textAppearanceMedium" />

                <TextView android:id="@+id/radiusTextView"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="?android:attr/textAppearanceSmall" />
            </LinearLayout>

            <SeekBar android:id="@+id/radiusSeekBar"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="10dp" />

            <LinearLayout android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <Button android:id="@+id/editEventButton"
                    android:layout_width="0px"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:text="@string/edit_event" />

                <Button android:id="@+id/cancelMarkerWindowButton"
                    android:layout_width="0px"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:text="@string/close" />
            </LinearLayout>
        </LinearLayout>

        <TableLayout android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical">

            <TableRow android:layout_width="wrap_content" 
                android:layout_height="wrap_content" 
                android:gravity="center">

                <ImageButton android:id="@+id/ImageButton03"
                    android:layout_width="50dp"
                    android:layout_height="50dp"
                    android:layout_gravity="center"
                    android:src="@drawable/arrow_1" />
            </TableRow>

            <TableRow android:layout_width="wrap_content"
                android:layout_height="wrap_content">

                <ImageButton android:id="@+id/ImageButton01"
                    android:layout_width="50dp"
                    android:layout_height="50dp"
                    android:src="@drawable/arrow_1"/>

                <ImageButton android:id="@+id/ImageButton02"
                    android:layout_width="50dp"
                    android:layout_height="50dp"
                    android:src="@drawable/arrow_1"/>
            </TableRow>

            <TableRow android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center">

                <ImageButton android:id="@+id/imageButton1"
                    android:layout_width="50dp"
                    android:layout_height="50dp"
                    android:src="@drawable/arrow_1" />
            </TableRow>
        </TableLayout>
    </LinearLayout>
    <View android:layout_width="match_parent"
        android:layout_height="3dp"
        android:background="@color/WhiteSmoke" />

    //Constructor
    public MarkerPopupWindow(Marker edited_event_marker,Context context)
    {   
        LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View markerWindowView = inflater.inflate(R.layout.event_editor_popup_window, null, false);
        markerWindowView.findViewById(R.id.cancelMarkerWindowButton);

        int height =  ViewGroup.LayoutParams.WRAP_CONTENT;
        int width = ViewGroup.LayoutParams.MATCH_PARENT;
        PopupWindow markerWindow = new PopupWindow(markerWindowView,
                width,height,
                false); //Focusable, if false window cannot be touched.
        markerWindow.setWindowLayoutMode(width, height);
        //Called these methods (commented out) attempting to fix the problem without success.
        //markerWindow.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED);
        //markerWindow.setSoftInputMode(PopupWindow.INPUT_METHOD_NEEDED);
        //markerWindow.setOutsideTouchable(true);
        markerWindow.showAtLocation(findViewById(R.id.location_tab_container), Gravity.TOP, 0, 0);
    }
4

1 回答 1

1

您对弹出窗口的处理方式是地图或弹出窗口都可以具有焦点,如果您希望能够在弹出窗口打开的情况下移动地图,我认为您可能需要从地图 api 弹出窗口,就像这样当您单击标记时,谷歌地图会显示。

有关弹出窗口(在地图 api 中称为 InfoWindow)的更多信息,您可以转到此处

于 2013-03-11T12:29:59.070 回答