在 ViewPager 滑动时显示/隐藏 FloatingActionButton

2023-12-22

我的活动有 3 个选项卡。每个选项卡页面都是一个显示 RecyclerView 的片段。其中一个片段中有 FloatingActionButton。我正在片段的布局中实现此按钮。我还在片段的右下角将其设为静态。

片段布局:

- CoordinatorLayout
    - RecyclerView
    - FAB (without any behavior)

在活动布局中,我有:

- CoordinatorLayout
    - AppBarLayout
        - Toolbar
        - TabLayout (SmartTabLayout)
    - ViewPager

现在的问题是,当工具栏展开时,FAB 在视图中半隐藏,但当工具栏折叠时,FAB 完全显示。尽管如果我在 Activity 本身中实现 ​​FAB 按钮,则不会发生这种情况。但我不想在所有片段中都有该按钮。我只是把它放在第一个片段中。

这是我为了更清楚地解释这一点而制作的 gif。

活动布局的 XML:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/coordinatorLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/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="wrap_content"
            android:minHeight="?attr/actionBarSize"
            android:background="@color/color_primary"
            app:layout_scrollFlags="scroll|enterAlways" />

        <com.ogaclejapan.smarttablayout.SmartTabLayout
            android:id="@+id/viewpagertab"
            android:layout_width="match_parent"
            android:layout_height="@dimen/tab_height"
            android:background="@color/color_primary" />

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

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />

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

片段布局的 XML:

<?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:id="@+id/coordinatorLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/card_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab_add"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="@dimen/fab_margin"
        android:src="@drawable/ic_plus_white_48dp"
        app:layout_anchor="@id/card_list"
        app:layout_anchorGravity="bottom|right|end" />

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

我的问题是如何使按钮在 recyclerview 滚动时保持可见?


最好的选择是将 FloatingActionButton 放在 Activity 中,然后调用show() and hide() in a ViewPager.OnPageChangeListener。这样你就会变得很好进入/退出动画 https://material-design.storage.googleapis.com/publish/material_v_4/material_ext_publish/0B6Okdz75tqQsVlhxNGJCNTEzNFU/components-buttons-fab-behavior_04_xhdpi_009.webm符合材料设计指南 https://www.google.com/design/spec/components/buttons-floating-action-button.html#buttons-floating-action-button-floating-action-button.

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {

    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

    }

    @Override
    public void onPageSelected(int position) {
        if (position == 0) {
            fabAdd.show();
        } else {
            fabAdd.hide();
        }
    }

    @Override
    public void onPageScrollStateChanged(int state) {

    }
});

Result:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 ViewPager 滑动时显示/隐藏 FloatingActionButton 的相关文章

  • onBeaconServiceConnect 未调用

    和以前一样 我使用 Android Beacon 库 它已经工作了 我可以通过 BLE 低功耗蓝牙找到信标 但是现在 更新到最新版本的库后 现在方法onBeaconServiceConnect 不再跑了 请告诉我我需要做什么才能让它发挥作用
  • 如何强制 Eclipse 将 xml 布局和样式显示为文本?

    我最近升级到带有 ADT 20 0 3 的 Eclipse 4 2 Juno 如果我查看旧项目中的布局或样式 Eclipse 只会向我显示其适当的基于控件的编辑器 我想编辑语法突出显示的 xml 文本 我没有找到将插件的编辑器切换到此模式的
  • 在android中通过BLE传输图像

    我使用以下代码传输 1 MB 的图像 如果在每个数据包之间实现线程延迟 则图像将成功传输 如果未设置线程延迟 则所有数据包均从BluetoothGattServer 发送 但BluetoothGattCallback 不会接收所有数据包 任
  • FTS3 在 ORMLite 中搜索?

    我对 FTS3 一无所知 除了http developer android com guide topics search search dialog html http developer android com guide topics
  • 自定义选择器活动:SecurityException UID n 无权 content:// uri

    我正在构建一个选择器应用程序来替换本机 Android 共享对话框 它工作正常 除非我尝试通过长按图像 gt 共享图像从 Chrome 共享图像 我发现 Google 没有捕获异常 它崩溃了 所以我可以通过 Logcat 查看它 在 Goo
  • 如何使用Android opencv使图像的白色部分透明

    我无法链接超过 2 个网址 因此我将我的照片发布到此博客 请在这里查看我的问题 http blog naver com mail1001 220650041897 http blog naver com mail1001 220650041
  • 如何在React Native Android中获取响应头?

    您好 我想在获取 POST 请求后获取响应标头 我尝试调试看看里面有什么response with console log response 我可以从以下位置获取响应机构responseData但我不知道如何获取标题 我想同时获得标题和正文
  • android EditText 输入类型用于 StreetNumber 字段

    我试图在地址对话框的 streetNumber 字段中选择正确的 inputType 我想先显示数字键盘 然后让用户输入字母字符 对于一些非常特殊的情况 更接近这个的是 inputType datetime 但这不允许输入字母字符 那么如何
  • Camera.open()返回NULL Android开发

    我正在按照构建相机应用程序的教程进行操作http developer android com tools device html http developer android com tools device html我对 Camera o
  • Android 服务是否有办法检测设备何时锁定?

    我有一个 Android 服务 我希望在设备锁定时执行操作 我想澄清一下 我对屏幕开 关状态不感兴趣 我知道如何使用带有 Intent ACTION USER PRESENT 和 KeyguardManager inKeyguardRest
  • 如何检查用户在EditText中输入自己的电话号码?

    用户将在我的 Android 应用程序的注册页面上的编辑文本中输入手机号码 如何检查用户输入的是他 她的手机号码而不是其他人的 我试过这个 TelephonyManager tMgr TelephonyManager mAppContext
  • Android Studio:未找到 Gradle DSL 方法:“classpath()”

    首先 我已阅读所有其他解决方案帖子以及有关迁移到 1 0 的官方文档 到目前为止 还没有任何效果 Error Error 23 0 Gradle DSL method not found classpath Possible causes
  • Java 文件上传速度非常慢

    我构建了一个小型服务 它从 Android 设备接收图像并将其保存到 Amazon S3 存储桶中 代码非常简单 但是速度非常慢 事情是这样的 public synchronized static Response postCommentP
  • 画透明圆,外面填充

    我有一个地图视图 我想在其上画一个圆圈以聚焦于给定区域 但我希望圆圈倒转 也就是说 圆的内部不是被填充 而是透明的 其他所有部分都被填充 请参阅这张图片了解我的意思 http i imgur com zxIMZ png 上半部分显示了我可以
  • 菜单在片段的 onCreateOptionsMenu 处多次膨胀调用

    我使用 Fragments 当我切换到嵌套 Fragment 时 它实现了public void onCreateOptionsMenu Menu menu MenuInflater inflater 当我到达该嵌套片段时 我的菜单会多次膨
  • Android FragmentTransaction 自定义动画(未知动画师名称:Translate)

    我正在尝试让自定义动画与我的片段一起使用 我已按照在线教程进行操作 但出现以下错误 java lang RuntimeException 未知的动画师名称 翻译 动画的 XML 如下
  • Android:监听状态栏通知

    有没有办法在状态栏被下拉时监听通知 1 用于检测状态栏变化 您可以注册一个监听器来获取系统UI可见性变化的通知 因此 要在您的活动中注册侦听器 Detecting if the user swipe from the top down to
  • 错误:无法创建新会话,因为找不到需要 HttpClient、InputStream 和 long 的“createSession”

    我正在尝试自动化 Android 混合应用程序 但出现以下错误 1 线程 main org openqa selenium WebDriverException中出现异常 无法创建新会话 因为未找到需要 HttpClient InputSt
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • 如何在基本活动中使用 ViewBinding 的抽象?

    我正在创建一个基类 以便子级的所有绑定都将设置在基类中 我已经做到了这一点 abstract class BaseActivity2 b AppCompatActivity private var viewBinding B null pr

随机推荐

  • 从 Gradle 构建脚本生成 JPA2 元模型

    我正在尝试为新项目设置 Gradle 构建脚本 该项目将使用 JPA 2 以及Querydsl http www querydsl com On the Querydsl 参考文档的下一页 http source mysema com st
  • 无法打开流:没有这样的文件或目录,是的!

    我在需要一些文件时遇到问题 PHP 告诉我这些文件不存在 但是当我扫描目录时它告诉我它确实存在 我已将文件简化为require功能 但仍然无法正常工作 这是我的设置 root test php test test2 php sub test
  • UIScrollView ContentSize.height默认为0.0000?

    我正在尝试使用 UIScrollView 创建动态表单 但我注意到当我使用NSLog我的scrollView的contentSize height 0 00000我将滚动视图构建为故事板上屏幕的宽度和高度 其中包含元素 那么为什么会返回0呢
  • iOS 中的 Flutter audio_service 依赖问题

    我正在添加audio service https pub dartlang org packages audio service用于在后台运行音频的包 在 android 中它可以工作 但作者尚未在 iOS 中实现 因此在 iOS 中运行应
  • 当继承相对行高时,它与元素的字体大小无关。为什么?我如何使其相对?

    我有一个全局重置font size and line height to inherit对于每个元素 font size inherit line height iherit For html 我明确定义它们 html font size
  • 与 NaN 不同,为什么浮点无穷大相等?

    为什么无穷大比较不遵循应用于 NaN 的逻辑 这段代码打印出来false三次 double a Double NaN double b Double NaN System out println a b false System out p
  • 如何在swift中实现关键字关联功能?

    例如 当我输入几个字母时 相应的单词会自动出现 然后我可以选择它们 但这样的功能如何实现呢 我应该使用哪种 UI 元素 我是否还应该将世界上所有国家都输入到cord数据中 以便得到相应的结果 您显示的图像似乎只是一个 UITableView
  • 使用 Keras 1.2.2 和 MXnet 后端重置 GPU 内存

    我正在使用 AWS p2 x8large 并尝试使用 k 折交叉验证来评估我的模型 第一次重复后 我的 GPU 内存已满 当我尝试再次训练时 我收到了 cuda 内存问题 我的问题是如何在循环内重置 GPU 内存 我使用了 K clear
  • 使用 PyCharm 的 Profiler 时出现“导入错误:无法导入名称 cbook”

    我正在尝试运行 PyCharm 分析器 但收到以下错误消息 Traceback most recent call last File home b3053674 ProgramFiles pycharm 2017 1 4 helpers p
  • finditem() 找不到菜单,并出现 NullPointerException

    我在更改选项菜单上的某些属性时陷入困境onCreateOptionsMenu 看起来 findItem 返回 null 即使我很确定对菜单项的引用是正确的 我的代码如下所示 Override public boolean onCreateO
  • 构建 Angular CLI 时出错

    我在尝试构建 Angular 2 项目时遇到问题 当我打电话时ng build 构建器正在将路由路径验证为模块 并表示它不存在 错误无法从 C Users bruno martins git disciples ui src app app
  • 为什么即使在我调用 Thread.currentThread().interrupt() 之后,thread.isInterrupted() 仍返回 false

    当我运行这个测试时 为什么sleepThread isInterrupted 总是返回 false 我必须执行Thread currentThread interrupt 当捕获一个时设置中断标志InterruptedException T
  • React - 表单提交后清除输入值

    我遇到了一个相当愚蠢的问题 我正在创建我的第一个 React 应用程序 并且遇到了一个小问题 在提交表单后我无法清除我的输入值 尝试用谷歌搜索这个问题 在这里找到了一些类似的线程 但我无法解决这个问题 我不想更改组件 应用程序的状态 只是将
  • 加载多个.dta 文件

    我有一个包含超过 500 个 dta 文件的文件夹 我想将其中一些文件加载 到单个 R 对象中 我的 dta 文件有一个由四个部分组成的通用名称 两个字母 四个数字 y dta 例如 名称可以是 de2015y dta 或 fr2008y
  • 急切执行:梯度计算

    我想知道为什么这个非常简单的梯度计算不能正常工作 它实际上是生成一个 None None 向量 显然 这不是期望的输出 import tensorflow as tf tf enable eager execution a tf const
  • 如何从应用程序内部检测 JVM 垃圾收集周期?

    我只是想知道是否有一种方法可以从正在 gc 的代码 JVM 中检测垃圾收集周期 时机不起作用 因此 事件发生在实际周期之前还是之后并不重要 在周期期间发生事件似乎不太可能 而且也可能很危险 具体取决于所使用的 GC 实现 我能找到的只是可以
  • shuffle阶段和combiner阶段有什么区别?

    我对 MapReduce 框架很困惑 我从不同的来源读到了这方面的内容 感到很困惑 顺便说一句 这是我对 MapReduce 作业的想法 1 Map gt emit
  • SQL:查询的默认排序依据是什么?

    没有时查询的默认顺序是什么ORDER BY用来 不存在这样的命令 取自没有 ORDER BY 子句的 SELECTS 的默认排序顺序是什么 http forums mysql com read php 21 239471 239688 ms
  • 如何使 waitForWebPageToLoad 在编码的 ui 测试中工作?

    首先 我是编码 ui 测试的初学者 我的代码技能很差 但我正在努力学习 现在我正在 Visual Studio 中手工编写一些测试用例 C 记录选项对我来说还不够 但我无法得到waitForWebPageToLoad上班 例如下面的例子 我
  • 在 ViewPager 滑动时显示/隐藏 FloatingActionButton

    我的活动有 3 个选项卡 每个选项卡页面都是一个显示 RecyclerView 的片段 其中一个片段中有 FloatingActionButton 我正在片段的布局中实现此按钮 我还在片段的右下角将其设为静态 片段布局 Coordinato