显示覆盖时如何启用 viewpager 滑动
How is it possible to viewpager swiping being enable while an overlay is shown
我有这个xml布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/root_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
>
<com.duolingo.open.rtlviewpager.RtlViewPager
android:id="@+id/book_reader_viewpager_portrait"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="@color/white"
tools:visibility="visible"
android:visibility="gone" />
<ImageView
android:id="@+id/icon_pause"
android:layout_width="@dimen/book_reader_pause"
android:layout_height="@dimen/book_reader_pause"
android:layout_alignParentEnd="true"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:src="@drawable/icon_pause" />
<include layout="@layout/loading_screen" />
<include layout="@layout/layout_offline_no_data" />
<include layout="@layout/layout_error_no_data" />
<include layout="@layout/layout_book_reader_overlay" />
<include layout="@layout/layout_book_reader_continue_or_startover" />
</RelativeLayout>
我遇到这个问题,当显示此叠加层时 (layout_book_reader_overlay) 我可以水平滑动或滚动页面..据我所知,这不应该发生
触摸和点击事件被传递到接受它们的最高视图。如果您不希望 ViewPager 在显示叠加层时滑动,请在叠加层布局的根视图上设置 android:clickable="true"
。这样一来,即使 ViewPager 不响应点击事件,它也会带走点击事件。
请注意,要使其真正起作用,您的叠加层必须完全覆盖 ViewPager,否则未覆盖的部分仍可滑动。如果叠加层不是全屏的,那么您可以将叠加层的最外层视图设为全屏透明,使其可点击,然后将实际叠加层放入其中。
<FrameLayout
xmlns:android="..."
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true">
<!-- put your overlay layout in here -->
</FrameLayout>
我有这个xml布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/root_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
>
<com.duolingo.open.rtlviewpager.RtlViewPager
android:id="@+id/book_reader_viewpager_portrait"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="@color/white"
tools:visibility="visible"
android:visibility="gone" />
<ImageView
android:id="@+id/icon_pause"
android:layout_width="@dimen/book_reader_pause"
android:layout_height="@dimen/book_reader_pause"
android:layout_alignParentEnd="true"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:src="@drawable/icon_pause" />
<include layout="@layout/loading_screen" />
<include layout="@layout/layout_offline_no_data" />
<include layout="@layout/layout_error_no_data" />
<include layout="@layout/layout_book_reader_overlay" />
<include layout="@layout/layout_book_reader_continue_or_startover" />
</RelativeLayout>
我遇到这个问题,当显示此叠加层时 (layout_book_reader_overlay) 我可以水平滑动或滚动页面..据我所知,这不应该发生
触摸和点击事件被传递到接受它们的最高视图。如果您不希望 ViewPager 在显示叠加层时滑动,请在叠加层布局的根视图上设置 android:clickable="true"
。这样一来,即使 ViewPager 不响应点击事件,它也会带走点击事件。
请注意,要使其真正起作用,您的叠加层必须完全覆盖 ViewPager,否则未覆盖的部分仍可滑动。如果叠加层不是全屏的,那么您可以将叠加层的最外层视图设为全屏透明,使其可点击,然后将实际叠加层放入其中。
<FrameLayout
xmlns:android="..."
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true">
<!-- put your overlay layout in here -->
</FrameLayout>