在另一个片段问题的片段

当我在另一个片段(我们称之为main)上显示一个片段(全屏幕背景为#77000000 )时,我的主片段仍然对点击作出反应(即使我们没有看到它,也可以点击一个button)。

:如何防止点击第一(主)片段?

编辑

不幸的是,我不能隐藏主要的片段,因为我使用了第二个片段的透明背景(所以用户可以看到后面的内容)。

将第二个片段视图的clickable属性设置为true。 该视图将捕获该事件,以便它不会被传递到主碎片。 所以如果第二个片段的视图是一个布局,这将是代码:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" /> 

解决scheme非常简单。 在我们的第二个片段(与我们的主要片段重叠)中,我们只需要捕获onTouch事件:

 @Override public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstance){ View root = somehowCreateView(); /*here is an implementation*/ root.setOnTouchListener(new View.OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { return true; } }); return root; } 

这听起来像DialogFragment的情况。 否则用片段pipe理器提交一个隐藏和另一个显示。 这对我有效。

你可以做的是你可以通过使用onClick属性来对前一个片段的布局进行空白点击,并且在活动中你可以创build一个函数doNothing(View view)并且不要写任何东西。 这将为你做。

最好的方法是使用FrameLayout我使用它的片段,所以不需要在其他Xml中声明片段

 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:background="@color/colorPrimary" tools:context="com.example.sumedh.fragmentpractice1.MainActivity"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/editText" android:layout_gravity="center"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" android:id="@+id/BtnNext"/> </FrameLayout>