Android 禁止触摸背景片段上的事件
我有一个地图片段,它的视图在用户登录时可用。当用户注销时,显示登录表单的警报弹出,而地图仍在后台可见。我的问题是,即使登录对话框位于顶部,地图和菜单仍会对触摸事件作出反应,我如何防止这种情况发生 地图片段:Android 禁止触摸背景片段上的事件,android,android-fragments,Android,Android Fragments,我有一个地图片段,它的视图在用户登录时可用。当用户注销时,显示登录表单的警报弹出,而地图仍在后台可见。我的问题是,即使登录对话框位于顶部,地图和菜单仍会对触摸事件作出反应,我如何防止这种情况发生 地图片段: public class MainFragment extends MapFragment{ ... @Override public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bun
public class MainFragment extends MapFragment{
...
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
View v = super.onCreateView(inflater, parent, savedInstanceState);
setRetainInstance(true);
setHasOptionsMenu(true);
...
m_loginManager = new LoginManager(getActivity());
m_loginManager.show();
...
return v;
}
登录对话框:
public class LoginManager extends Dialog {
public LoginManager(Activity activity)
{
super(activity);
setContentView(R.layout.alert_login);
...
}
}
警报\u login.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:background="@android:color/white"
android:orientation="vertical"
android:padding="15dp"
android:clickable="true">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/username"
android:textAppearance="?android:attr/textAppearanceSmall" />
<EditText
android:id="@+id/userName"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="text"
android:text="" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/password"
android:textAppearance="?android:attr/textAppearanceSmall" />
<EditText
android:id="@+id/password"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPassword"
android:text="" />
<Button
android:id="@+id/loginButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/loginButton" />
</LinearLayout>
下面是它的外观:
禁用菜单按钮
为了禁用菜单按钮,您可以覆盖
onprepareOptions菜单
@Override
public boolean onPrepareOptionsMenu (Menu menu) {
return false;
}
要在出现alert\u login.xml
时禁用main fragment
中的触摸事件,应将clickable
属性设置为true
警报\u login.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:background="@android:color/white"
android:orientation="vertical"
android:padding="15dp"
android:clickable="true">
//...
//...
通过“…菜单仍有反应…”您是指菜单按钮吗?让我编辑关于禁用菜单的问题:在覆盖OnPrepareOptions菜单后,它不能动态启用,对吗?