单击透明区域时将触摸事件传递给底层视图,但允许单击按钮
Pass touch events to underlying view when click on transparent area, but allow clicks on buttons
我有一个问题,因为我不知道如何让 Fragment B 的透明背景将触摸事件传递给 Fragment A:
片段 C 的片段 B 位于片段 A 之上:片段 C XML:
...
<FrameLayout
android:id="@+id/fragment_A_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
<FrameLayout
android:id="@+id/fragment_B_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
...
这里是 Fragment C 将片段附加到那些 FrameLayouts 的地方:Fragment C class:
...
fragmentTransaction.add(R.id.fragment_A_container, FragmentA, TAG_FRAGMENT_A);
fragmentTransaction.add(R.id.fragment_B_container, FragmentB, TAG_FRAGMENT_B);
...
但是现在,我不知道如何只让工具栏和浮动操作按钮被点击,而后台的其余部分将点击事件传递给Fragment A?以下是 Fragment B 布局的基本思路:FragmentB XML:
<LinearLayout
android:layout_gravity="bottom"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.design.widget.FloatingActionButton/>
<android.support.v7.widget.Toolbar
android:layout_gravity="bottom"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
谢谢!
它确实有效,但我注意到在我的代码中,它确实在这样做(FragmentD
是一个不透明的背景,意在 FragmentA
和 FragmentB
下面):
fragmentTransaction.add(R.id.fragment_A_container, FragmentD, TAG_FRAGMENT_D);
fragmentTransaction.add(R.id.fragment_A_container, FragmentA, TAG_FRAGMENT_A);
fragmentTransaction.add(R.id.fragment_B_container, FragmentB, TAG_FRAGMENT_B);
我认为通过添加 FragmentD
和 然后 添加 FragmentA
到 fragment_A_container
,FragmentA
应该在最前面FragmentD
,但我想情况并非如此。所以我通过将它们分成自己的 FrameLayouts 来保证顺序是正确的,并且效果很好:
已更新XML:
...
<FrameLayout
android:id="@+id/fragment_D_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
<FrameLayout
android:id="@+id/fragment_A_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
<FrameLayout
android:id="@+id/fragment_B_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
...
我有一个问题,因为我不知道如何让 Fragment B 的透明背景将触摸事件传递给 Fragment A:
片段 C 的片段 B 位于片段 A 之上:片段 C XML:
...
<FrameLayout
android:id="@+id/fragment_A_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
<FrameLayout
android:id="@+id/fragment_B_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
...
这里是 Fragment C 将片段附加到那些 FrameLayouts 的地方:Fragment C class:
...
fragmentTransaction.add(R.id.fragment_A_container, FragmentA, TAG_FRAGMENT_A);
fragmentTransaction.add(R.id.fragment_B_container, FragmentB, TAG_FRAGMENT_B);
...
但是现在,我不知道如何只让工具栏和浮动操作按钮被点击,而后台的其余部分将点击事件传递给Fragment A?以下是 Fragment B 布局的基本思路:FragmentB XML:
<LinearLayout
android:layout_gravity="bottom"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.design.widget.FloatingActionButton/>
<android.support.v7.widget.Toolbar
android:layout_gravity="bottom"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
谢谢!
它确实有效,但我注意到在我的代码中,它确实在这样做(FragmentD
是一个不透明的背景,意在 FragmentA
和 FragmentB
下面):
fragmentTransaction.add(R.id.fragment_A_container, FragmentD, TAG_FRAGMENT_D);
fragmentTransaction.add(R.id.fragment_A_container, FragmentA, TAG_FRAGMENT_A);
fragmentTransaction.add(R.id.fragment_B_container, FragmentB, TAG_FRAGMENT_B);
我认为通过添加 FragmentD
和 然后 添加 FragmentA
到 fragment_A_container
,FragmentA
应该在最前面FragmentD
,但我想情况并非如此。所以我通过将它们分成自己的 FrameLayouts 来保证顺序是正确的,并且效果很好:
已更新XML:
...
<FrameLayout
android:id="@+id/fragment_D_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
<FrameLayout
android:id="@+id/fragment_A_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
<FrameLayout
android:id="@+id/fragment_B_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
...