我有一个 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);
}