如何在 NestedScrollView 中使用 ViewPager 和 RecyclerView 进行工作

2023-11-25

我正在将 NestedScrollView 与 ViewPager 一起使用。 NestedScrollView 内部有一个 LinearLayout,最后有一些 TextView、TabLayout 和 ViewPager。 TextView 占据了大部分空间,为 ViewPager 留下了一点空间。 ViewPager 使用两个片段,其中一个片段中有一些 TextView 和 ImageView,另一个片段中有一个 RecyclerView。

当我将 ViewPager 高度设置为WRAP_CONTENT它只占用剩下的空间,我无法滚动查看第一个片段的其余部分,而第二个片段则在小 ViewPager 内滚动。

例如,当我将 ViewPager 的高度设置为 1000dp 时,我可以在第一个片段上向下滚动,但第二个片段仍在小 ViewPager 内滚动。当我使用 RecyclerView 滚动片段后,第一个片段中的 scoll 不再工作。

如何解决滚动问题并使 ViewPager 与WRAP_CONTENT?

这是我的代码:

<?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"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary" />

    </android.support.design.widget.AppBarLayout>

    <android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        app:layout_scrollFlags="scroll"
        android:fillViewport="true">

        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/mainBackground"
            android:orientation="vertical">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="SOME TEXT" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="SOME TEXT" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="SOME TEXT" />

            <android.support.design.widget.TabLayout
                android:id="@+id/tabLayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />

            <android.support.v4.view.ViewPager
                android:id="@+id/viewPager"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />

        </LinearLayout>

    </android.support.v4.widget.NestedScrollView>

</android.support.design.widget.CoordinatorLayout>

我认为你应该像这样重写 ViewPager :

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);

    int height = 0;
    for (int i = 0; i < getChildCount(); i++) {
        View child = getChildAt(i);
        child.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
        int h = child.getMeasuredHeight();
        if (h > height) height = h;
    }
    heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 NestedScrollView 中使用 ViewPager 和 RecyclerView 进行工作 的相关文章

  • 如何从自定义视图访问主机片段的生命周期范围?

    我需要在自定义视图中使用协程 看完这个之后 我相信我最好的选择是使用生命周期范围作为协程作用域 这样当lifecycleowner被销毁时 它会自动取消 但是我似乎无法访问自定义视图中的生命周期范围 根据文档 https developer
  • Android 中的振动器

    如何创建Vibrator对象并调用vibrate函数 http developer android com reference android os Vibrator html http developer android com refe
  • 如何获取firebase数据库中所有孩子的数据?

    我有这个 firebase 数据库 我需要获取用户的所有电话号码 我应该使用哪个侦听器来获取所有孩子 每个用户都作为一个对象添加 其中用户 ID 作为该对象的名称 我需要在不知道用户 ID 的情况下检索该对象 我搜索了文档 它与DataSn
  • Jetpack Compose 中的图像裁剪器?

    我到处搜索 但没有找到有关在 Jetpack Compose 中裁剪图像的文档 如何在 Jetpack Compose 中裁剪图像 实际上 您可以使用那些较旧的 Android 库 没有问题 我用的是这个 https github com
  • android 无法解析方法 setcontentview

    今天在android studio 中遇到了一个错误 我正在尝试在应用程序中创建一个关于我们的屏幕 布局 xml 文件已创建 任何帮助表示赞赏 谢谢 错误 无法解析方法 setcontentview int package example
  • 使用 SharedPreferences 从 ListView 保存数据

    我尝试寻找答案 但找不到我要找的东西 这是我第一次尝试保存数据 使用 SharedPreferences 所以我不太确定我在做什么 要点是 用户在 EditText 中输入内容后 它会填充 ListView 但我也希望这样 当执行此操作时
  • Android:如何检测双击?

    我在实现双击时遇到问题 好吧 我实施了onGestureListener我有gestureDetector 但我不确定问题出在哪里 这是我的代码 public class home extends TabActivity implement
  • Compose-Navigation:在导航之前从堆栈中删除以前的可组合项

    我在用着compose navigation alpha09 处理可组合项之间的导航 我想删除启动画面当移动到下一个目的地时 我不希望背部受压返回 Splash 以下尝试未按预期工作 navHostController navigate R
  • 如何让按钮的角变圆?

    我想制作一个角button圆形的 在 Android 中是否有一种简单的方法可以实现这一点 如果你想要这样的东西 这是代码 1 在您的可绘制文件夹中创建一个 xml 文件 如 mybutton xml 并粘贴以下标记
  • android.provider.Settings.ACTION_BLUETOOTH_SETTINGS 在三星上崩溃

    任何人都知道为什么 Intent pairIntent new Intent android provider Settings ACTION BLUETOOTH SETTINGS startActivityForResult pairIn
  • 在 Android 上解析 RSS

    我有几个 RSS 源需要为我的应用程序进行解析 我按照这里的优秀教程进行操作 http w2davids wordpress com android rssatom feeds parsing with rome http w2davids
  • @android的含义

    我想问一下是什么意思 android as in android id android id list 我在不同的 android 示例和教程中看到过它 我也用谷歌搜索过它 我发现的唯一解释是 列表和空 ID 是由 Android 平台为我
  • TextView 中缩进项目符号列表

    我有一个 TextView 我用 strings xml 中的字符串资源中的文本填充它 字符串资源包含 元素 用于在 TextView 内创建项目符号列表 我的问题是我想控制项目符号列表中跨越多行的行的缩进 默认情况下 文本不会缩进超过项目
  • Ctrl 单击 Eclipse 中的类显示二进制/jar 而不是源

    使用Eclipse 版本 Helios 服务版本 2 内部版本号 20110218 0911 与Android插件 我有一个 Android 项目 AndroidUtil 它被标记为我的主要 Android 应用程序的 库 项目 当我按住
  • 解析JSON数据并将其放入gridview中

    我正在开发一个应用程序 我必须在其中解析JSON数据并且必须将它们放入自定义中gridview 它应该是这样的 到目前为止 我已经在 asynctask 中解析了 JSON 数据并获取了这些值 这是我的代码 private class ge
  • SpannableString 中的 URLSpan

    我正在使用这个例子SpannableString http developer android com resources samples ApiDemos src com example android apis text Link ht
  • 找不到满足版本限制的“com.google.code.findbugs:jsr305”版本

    当生成签名的 APK 进行发布时 我收到此错误消息 Cannot find a version of com google code findbugs jsr305 that satisfies the version constraint
  • Android Studio MediaStore,低于 SDK 29 将图像保存在 SD 卡中失败

    我需要将图像保存在Android 10以下的sd card的图片目录中 我已经实现了范围存储 此代码适用于sdk 29及以上版本 因为MediaStore getExternalVolumeNames是在sdk 29中添加的 sdk 29以
  • Android 通知上有按钮

    我正在尝试使用 2 个按钮发出通知 一个带我回到活动 另一个将其关闭 有谁知道如何捕获按钮单击事件 请记住活动已暂停 我很高兴发布它 经过一夜的工作 我发现了一些东西 那么 我们开始吧 1 为您的通知创建 xml 布局文件 2 使用Noti
  • 在 IntelliJ IDEA 11 中编译期间未检测到模块依赖性

    我正在开发一个 Android 应用程序 我正在尝试包含图形视图 https github com jjoe64 GraphView绘制一些图表 需要将其作为模块依赖项包含在内 执行此操作后 IntelliJ IDE 会正确检测到包 我可以

随机推荐

  • 以编程方式使用 Eureka 客户端问题 - DiscoveryClient 已完成关闭

    我已经创建了具有复制功能的 Eureka 服务器现在尝试启动客户端 当我尝试启动时spring microservices eureka client 我收到以下错误 使用 Spring Boot 版本2 1 1 RELEASE 启动版本也
  • Jquery加载https url

    我有这个问题 在外部网站中我有一个像这样的脚本 div div example com 采用 https 允许 http 和 https 在脚本 widget js 的服务器中 我有 idtest load https example co
  • 使用 Typescript 通过 Webpack 动态加载模块

    我正在尝试构建一个支持插件的 Web 应用程序 环境是 Angular 2 到目前为止 Typescript 2 1 和 Webpack 2 我有一些扩展点 插槽 插件可以在其中绘制内容 基本上我有一个组件 它能够托管运行时已知的其他一些组
  • 脚本由 Bash 执行时产生的结果与由 cron 执行时产生的结果不同

    请考虑以下 crontab root SHELL bin bash 0 3 var maintenance raid sh 和 bash 脚本 var maintenance raid sh bin bash echo n Checking
  • 了解 Python Pickle 不安全性

    Python 文档中指出pickle不安全 不应解析不受信任的用户输入 如果你研究这个 几乎所有的例子都证明了这一点system 通过呼叫os system 我不清楚的是如何os system没有被正确解释os正在导入模块 gt gt gt
  • 如何获取 win32 API 中所有屏幕的尺寸(RECT)?

    我正在为测试团队编写一份应用程序 该应用程序的作用是让您截取屏幕任何部分的屏幕截图 然后将其连同注释一起上传到测试团队服务器 截屏涉及选择屏幕上要截屏的区域 为此 我创建了一个半透明窗口并将其覆盖在整个屏幕上 我目前正在使用GetDeskt
  • 在 Google 地图上放置图钉

    我需要将用户重定向到 Google 地图页面并在定义的位置上放置一些图钉 问题是您可以通过简单的请求轻松地将地图集中在某个点上 但是对于这样的要求如何设置pin呢 您可以使用 我的地图 来执行此操作 创建或打开地图 单击编辑进入编辑模式 单
  • 获取作为给定项目实例的所有维基数据项目

    维基数据有一个项目叫做智能手机型号 我想获取它的所有实例 问题 如何使用实时服务器以编程方式获取实例的标识符 最好不包括出现在 WhatLinksHere 但位于 Wikidata 命名空间而不是主命名空间中的误报 您的问题指定了 Medi
  • 在 JavaScript 中获取下周的某一天的日期

    根据今天的日期 new Date 我想在 javascript 中获取下周四晚上 7 点的日期 例如 如果今天的日期是 Mon Apr 24 2017 13 00 00 GMT 我正在寻找结果 Thu Apr 27 2017 19 00 0
  • 隐藏 Samsung Galaxy 设备上的“不支持 NFC 标签类型”错误

    我正在开发一款仅扫描 MIFARE Classic 卡的 UID 的应用程序 以方便考勤登记 我已经让它工作了 然而 每次我在 Galaxy S4 上扫描卡时 都会收到一条提示 不支持 NFC 标签类型 我想在应用程序打开时阻止或隐藏该消息
  • python - 从浮点数中删除所有小数

    如何从浮点数中删除所有小数位 a 100 0 我希望它变成 100 I tried str a rstrip 0 但它刚刚返回1 将其转换为怎么样int gt gt gt int a 100 为了完整起见 有很多方法可以从十进制数的字符串表
  • gdb 终止于信号?,未知信号

    我只是尝试在 Mac OSX 版本 10 12 上使用 gdb 调试代码 但在 gdb 中启动程序时总是遇到此未知错误 我在安装后对 gdb 进行了代码签名 并使用 g 标志编译了我的代码 这就是正在发生的事情 computer hello
  • 如何使用 refs 访问/覆盖元素的 className?

    我有一个文本和一个按钮 我想要实现的是这样的 如果我单击按钮 文本将被隐藏 我想在不使用的情况下实现这一目标state class Test extends Component constructor props codes hide gt
  • app.config 中的用户范围与应用程序范围

    app config 中的用户范围和应用程序范围有什么区别 用户范围设置用于存储特定于每个用户的值 而应用程序范围设置用于所有用户 看看这个article
  • 列表 SwiftUI 中的每行是否可以有多个 NavigationLink?

    我无法在列表的同一行中使用多个 NavigationLink 看起来导航堆栈完全混乱了 因为你点击一次 它就会进入多个视图并不稳定地返回 在 TestList 中 我尝试在部分中添加单独的 NavigationLinks 并且尝试将 Nav
  • 网络浏览器键盘快捷键

    我有一个显示一些 HTML 的 WebBrowser 控件 我希望用户能够复制整个文档 但不能执行任何其他操作 我已经设置了IsWebBrowserContextMenuEnabled and WebBrowserShortcutsEnab
  • 如何将 PKCS7_sign 结果转换为 char * 或 std::string

    我尝试编写一个小邮件过滤器来使用 S MIME 签署邮件 到目前为止 我已经完成了签署邮件的代码 我使用 openssl 中的 demos smime 代码示例来完成这项工作 不幸的是 这些示例演示了如何将输入消息写入输出文件 但我需要结果
  • SparklyR 从 Spark 上下文中删除表

    想要从 Spark 上下文 sc 中删除单个数据表 我知道单个缓存表可以取消缓存 但这与从 sc 中删除对象不同 据我所知 library sparklyr library dplyr library titanic library Lah
  • 如何使用 PhantomJS 获取网站的 HTML 源代码

    下面是 PhantomJS 的示例 它通过 DOM id 从外部网页获取一些元素 var page require webpage create console log The default user agent is page sett
  • 如何在 NestedScrollView 中使用 ViewPager 和 RecyclerView 进行工作

    我正在将 NestedScrollView 与 ViewPager 一起使用 NestedScrollView 内部有一个 LinearLayout 最后有一些 TextView TabLayout 和 ViewPager TextView