为了账号安全,请及时绑定邮箱和手机立即绑定

嵌套的浏览器:让外部滑动而不是内部

嵌套的浏览器:让外部滑动而不是内部

SMILET 2022-07-14 10:24:30
简而言之:我有一个ViewPager,vpOuter显示有另一个ViewPager,的片段vpInner。用户应该能够在片段之间滑动,vpOuter但显示的片段vpInner只能以编程方式交换。现在,向上滑动vpInner没有任何作用,而向外滑动则在's 的片段vpInner之间切换。vpOuter我怎样才能使刷卡vpInner被识别为在 之间刷卡vpOuter?(两人ViewPager互不相识)完整的故事:好的,所以我有一个具有三个片段的视图寻呼机的活动。我们称它们为 A、B 和 C。现在用户可以在它们之间滑动或使用底部导航。A是我们的“查看器片段”,如果有要显示的东西,它会显示一些东西,如果没有要显示的东西,它会显示任何东西,但它一次只会显示一个东西。A包含一个不可滑动的视图寻呼机。这背后的原因是我们想要显示文本和图像以及谁知道什么,我们为我们想要显示的每种媒体类型创建一个视图片段。所以当我们有一些东西要显示时,我们检查那个东西是什么,切换到相应的片段并用数据填充它。结果,A 将如下所示:<?xml version="1.0" encoding="utf-8"?><android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="vertical">        <[...].android.ui.widgets.NonswipableViewPager            android:id="@+id/view_container"            android:layout_width="match_parent"            android:layout_height="match_parent" />    </LinearLayout>    <!--irrrelevant floating action button here--></android.support.design.widget.CoordinatorLayout>在哪里/**A view pager that disables swiping to switch between pages. * Switching must happen programmatically.*/class NonswipableViewPager:ViewPager{    constructor(context:Context):super(context)    constructor(context: Context,attributeSet: AttributeSet):super(context,attributeSet)    override fun onInterceptTouchEvent(ev: MotionEvent?): Boolean {        return false    }    override fun onTouchEvent(ev: MotionEvent?): Boolean {        return false    }}让我们假设只有我们想要显示的文本内容。如果有TextContentView显示,一切正常,我可以在片段之间滑动,A没有问题。BC但是,当NoContentView正在显示时,我需要有意识地避免滑动时的文本内容,否则它不会做任何事情。我怎样才能让它总是表现得好像不可滑动的视图寻呼机不存在一样?
查看完整描述

1 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

这里的问题是由于外部 ViewPager 感应到它具有可以向同一方向滚动的可滚动内容,因此外部 ViewPager 拒绝向该方向滚动。

这可以通过canScrollHorizontally(int direction)在内部 ViewPager 中重写以返回 false 来解决。


查看完整回答
反对 回复 2022-07-14
  • 1 回答
  • 0 关注
  • 89 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信