如何显示下一张/上一张卡片的RecyclerView的一部分

2023-12-26

实现此功能的最佳策略是什么:

我有一个带有卡片的水平 RecyclerView。 每张卡片都会填满整个屏幕,但我希望它显示下一张卡片和上一张卡片(如果它有多个项目)的一部分。

我知道我可以通过设置我的卡来实现这一点android:layout_width在适配器上设置特定的 DP,例如 250dp,而不是match_parent。 但这看起来不像是一个正确的解决方案。

这是我的代码:

RecyclerView 的活动:

    class ListPokemon : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val items = createListPokemons()
        recyclerView.adapter = PokemonAdapter(items)
        recyclerView.layoutManager = LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)
        recyclerView.setHasFixedSize(true)
        val pagerSnapHelper = PagerSnapHelper()
        pagerSnapHelper.attachToRecyclerView(recyclerView)
    }

    private fun createListPokemons(): List<Pokemon> {
        val pokemons = ArrayList<Pokemon>()
        pokemons += createPokemon("Pikachu")
        pokemons += createPokemon("Bulbasaur")
        pokemons += createPokemon("Charmander")
        pokemons += createPokemon("Squirtle")

        return pokemons
    }

    private fun createPokemon(name: String) = Pokemon(name = name, height = 1, weight = 69, id = 1)
}

活动安排:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    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"
    tools:context=".MainActivity">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layoutManager="android.support.v7.widget.LinearLayoutManager"/>

</android.support.constraint.ConstraintLayout>

Adapter:

class PokemonAdapter(val list: List<Pokemon>) : RecyclerView.Adapter<PokemonAdapter.PokemonVH>() {

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PokemonAdapter.PokemonVH {
        return PokemonVH(LayoutInflater.from(parent.context)
            .inflate(R.layout.pokemon_item, parent, false))
    }

    override fun onBindViewHolder(holder: PokemonAdapter.PokemonVH, position: Int) {
        holder.textViewName.text = list[position].name
    }

    override fun getItemCount(): Int {
        return list.size
    }

    class PokemonVH(itemView: View) : RecyclerView.ViewHolder(itemView) {

        var textViewName: TextView = itemView.findViewById(R.id.textViewName)
    }
}

适配器布局:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
    android:layout_gravity="center_horizontal"
    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="wrap_content"
    android:layout_marginStart="16dp"
    android:layout_marginEnd="16dp"
    app:cardCornerRadius="8dp"
    app:cardElevation="4dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TextView
            android:padding="36dp"
            android:id="@+id/textViewName"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:textSize="22sp"
            tools:text="Teste String"/>

    </LinearLayout>

</android.support.v7.widget.CardView>

这是我的结果:

在这种情况下我想展示下一张卡片的一部分。我怎样才能做到这一点?

Thanks.


您需要做的是将填充设置为您的RecyclerView, set clipToPadding to false, use a SnapHelper有了它,您需要确保卡片上的边距小于或等于卡片中的填充RecylerView.

因此,假设您希望卡片到屏幕两侧的距离为 16dp,并且希望卡片之间的距离为 8dp。您必须将每张卡的边距设置为 4dp,因此总边距为 8dp。并且您必须将内边距设置为 12dp,因为卡片每侧已有 4dp 的边距。

它看起来有点像这样:

您的清单:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.RecyclerView
    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="wrap_content"
    app:layoutManager="android.support.v7.widget.LinearLayoutManager"
    android:clipToPadding="false"
    android:orientation="horizontal"
    android:paddingStart="12dp"
    android:paddingEnd="12dp"/>

你的卡:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
    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="wrap_content"
    android:layout_marginEnd="4dp"
    android:layout_marginStart="4dp"
    app:cardElevation="2dp"/>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何显示下一张/上一张卡片的RecyclerView的一部分 的相关文章

  • 如何设置日期选择器的日期?

    I use DatePickerDialog OnDateSetListener效果很好 我想在日期选择器中添加 120 天的日期 我的意思是 如果我添加 120 天 日期和月份将自动更改 怎么做 像这样的事情应该可以解决问题 Calend
  • OpenGL ES 2.0 中的透明对象

    所以我一直在 Android 上使用 OpenGL ES 2 0 但现在遇到了一个我无法解决的问题 提前道歉 看来我还不能发布两个以上的链接 所以我把我的三张图片放在 Photobucket 相册中 我正在尝试创建一个由透明区域 彩色玻璃
  • listview getChildAt() 返回 null

    我一直在做一个android项目并陷入了一个问题 我用谷歌搜索但没有找到答案 在我的项目中 有一个名为viewsurahfragment它包含一个 id 为的列表视图lv showquran 我想突出显示指定索引处的列表视图的视图 我正在使
  • 浮动操作按钮动画

    当 fab 出现时 它使用动画中的比例进行动画处理 当它隐藏时 它使用向外扩展动画 因此 它是一个缩小和缩小的动画 这个动画要怎么制作呢 从 Zielony 的回答来看 我完全按照我想要的方式制作了它 下面是正确应用效果的代码 scale
  • Recyclerview 中的 view.GONE 仍保留空间

    我在网上搜索了一下 发现 view invisible 和 view gone 之间有区别 vie gone 必须消失而不保留空间 但它不会发生在我身上 我该如何解决它 请帮忙看看这两张图片的链接 Android模拟器上的结果图 https
  • Kotlin 协程 - 优雅地处理挂起函数中的错误

    尝试使用从异步方法调用的挂起函数来实现对错误的优雅处理 如何捕获挂起方法引发的错误 suspend fun findById id Long User throw Exception my exception intentionally t
  • Android 线程和处理程序不工作

    我最近重构了一个旧项目 发现无论我做什么 特定部分都不再需要正常运行 本质上 我有一个带有 TextView 的 Activity 该视图按时间间隔从同一类中调用的线程更新 暂停是通过 Thread sleep 完成的 并且使用 Handl
  • Android 设备与本地 API 服务器通信

    我想知道如何在外部设备上模拟我的 Android 应用程序 以便与我的计算机上运行的本地 API 服务器进行通信 该应用程序使用 cordova 并使用 USB 连接在 Android 设备上运行 我正在本地运行 API 服务器 使用我的机
  • 如何测试返回DataSource.Factory的Dao方法?

    转移后从SqliteOpenHelper to room在我的应用程序中 我尝试编写测试DAO class 我的 DAO 看起来像这样 Query SELECT FROM cards fun getAllCards List
  • Fabric Beta 和 APK 拆分

    我根据 ABI 而不是密度来拆分我的应用程序 如下所示 splits abi enable true reset include x86 armeabi armeabi v7a mips arm64 v8a universalApk tru
  • Android:传递给 AESObfuscator 的随机 SALT 字节是否需要保持不变?

    我正在 Android 应用程序中实现许可 并且需要将一个 20 字节的数组传递到 AESObfuscator 然后再传递给 ServerManagedPolicy 对象 这个数组可以在每次运行代码时随机生成 还是必须硬编码 现在我正在随机
  • Google Play 将我的应用程序版本显示为“随设备而变化”

    我最近在 Google Play 商店更新了我的应用程序 在我的 Play 商店应用程序页面中 版本显示为因设备而异我没有上传多个 apk 而是使用单个 apk 更新了我的应用程序 那么为什么它显示版本为因设备而异 是否有任何设置可以删除此
  • 更新到Android 5.0后出现java.lang.UnsatisfiedLinkError

    我正在开发一个 Android 应用程序 它使用一个名为 liballjoyn java so 的本机库 可用here https allseenalliance org developers download在 Android 核心 SD
  • 无法将图像从 url 存储到 SD 卡

    我想将图像存储在 mnt sdcard 中 package com Downld file frm net import java io BufferedInputStream import java io File import java
  • PhoneGap文件传输错误1、哪里写FileTransfers?

    相关 https stackoverflow com questions 21044197 download file and store them locally in sdcard using phonegapbuild https s
  • 如何保存/加载 BigInteger 数组

    我想保存 加载BigInteger数组传入 传出 SharedPreferences 如何做呢 例如对于以下数组 private BigInteger dataCreatedTimes new BigInteger 20 Using Gso
  • 当 SystemUI 在 Android Boot 中加载时

    如何知道系统 UI 何时加载Android启动过程 状态栏和导航栏视图到底绘制在哪里 作为SystemUI是一个特权应用程序 那么它是否在启动器应用程序 主屏幕 启动之前加载 我不知道 欢迎任何建议 下面是一系列简要解释的步骤 希望能够阐明
  • onActivityResult() Intent 数据始终为 null

    有人可以告诉我为什么Intent data总是为空 Override protected void onActivityResult int requestCode int resultCode Intent data super onAc
  • Firebase 附加权限。是否要求用户接受

    我目前正在致力于将 Firebase Analytics 集成到我的 Android 应用程序中 我遇到的问题是 Firebase 添加了一些新权限 这些权限是 permission WAKE LOCK com google android
  • INSTALL_FAILED_NO_MATCHING_ABIS:无法提取本机库,res = -113设备

    当我在 android 8 0 设备中执行 android 项目时 我收到错误 INSTALL FAILED NO MATCHING ABIS 无法提取本机库 res 113 错误图像 https i stack imgur com 3kb

随机推荐

  • 如何更改 PreferenceScreen 中的字体大小

  • Vb.net Visual Studio 使用更新命令时出现问题

    您好 我正在从 sql 数据库创建一个搜索功能和更新按钮 我需要能够在其中搜索某些名称等 但还需要能够在数据集中进行更改并保存它们 到目前为止 搜索功能按照我想要的方式工作 但是 更新按钮并没有真正保存更改 因为当我停止并重新启动代码时 即
  • 如何使用 Entity Framework Core 进行全文搜索?

    我有以下查询 SELECT Animals name FROM Animals WHERE CONTAINS feline AND black 我在将其转换为 Entity Framework Core 查询时遇到问题 我有一个 SQL S
  • 如果作业不存在,如何从管道构建 Jenkins 作业而忽略该作业?

    我正在尝试从我的 Jenkins 管道中构建一个工作 如下所示 build job jobName propagate false wait false 这里 jobName 是一个多分支管道作业 因此有时可能不存在于我的工作流程中 如果作
  • 使用用户代理定位特定的黑莓手机

    我发现这个 javascript 可以检测黑莓设备
  • 如何用PyQt5设置窗口图标?

    from PyQt5 import QtWidgets QtGui from PyQt5 QtWidgets import from PyQt5 QtCore import class Application QMainWindow def
  • Magento 快速搜索

    我在使用 Magento 快速搜索时遇到一个小问题 当我在框中搜索时说 ice machine 然后一切都会返回原处ice or machine在标题中 我需要它 所以它只会搜索具有确切字符串的产品ice machine在标题中 我发现如果
  • 如何打印带有棋子位置列表的棋盘

    我正忙着做作业 我必须编写一个有 2 个 String 的函数 列表字符串包含 3 个字符 第一个是棋子 例如 K 国王 Q 后 R 车 B 主教 N 马 P 兵 第二个指定列 a h 第三个是行号 1 8 第一个字符串列表用于黑色棋子 第
  • 使用 Applescript/Automator 检查活动的互联网连接

    我有一个 Automator 工作流程来 ping 服务器 并下载我经常使用的时间表的最新副本 然后 该时间表会被复制到我的保管箱中 以便我可以在手机上查看 在工作流下载最新计划之前 它会从 Dropbox 中删除旧计划 这很有效 除非我没
  • 如何为 ui-bootstrap 日期选择器创建 angularJs 包装器指令?

    我正在使用ui bootstrap datepicker https angular ui github io bootstrap 显示某些日期字段的指令 然而 大多数时候我需要相同的设置 我希望它带有一个弹出窗口和一个弹出按钮 而且我还想
  • CLI 与 Node.js

    我正在节点中开发一个 CLI 它将发布到 NPM 由于它是一个 CLI 应用程序 我希望它在安装后包含在路径中 因此不需要键入 node my app js 来运行它 我希望它仅与 my app 一起运行 在 package json 中
  • Outlook 中的 HTML 电子邮件呈现 - VML

    我创建了一封 HTML 电子邮件 在 Outlook 2007 中查看时 我看不到某些图像 因为它们是背景 我已经使用 VML 做了一些修改 但是它不允许我将高度值留空 因为它默认为 100px 或者我无法输入自动或百分比 背景图像需要能够
  • 为什么delete会保留Array元素?

    今天我在 Stack Overflow 上偶然发现了一个问题 如何从 JavaScript 关联数组中删除对象 https stackoverflow com questions 346021 令我震惊的是 所接受的答案既具有误导性 又受到
  • 有人成功使用 Azure AD 对 Node.js Web 应用程序的用户进行身份验证吗?

    我正在尝试使用 Azure Active Directory 对我的 node js Web 应用程序的用户进行身份验证 但到目前为止还没有成功 我想知道是否有人真正实现了它 因为文档很差 通常有示例代码 但实际上没有任何指示所需参数是什么
  • tmux:如何打开光标下的文件

    我是 vim 用户并且习惯了gf命令 打开光标下的文件 现在我想问一下 tmux 是否有类似的东西 我可以在 tmux 窗格中导航 并且经常会出现光标下有一个文件路径的情况 现在我希望能够使用 vim 打开光标下的该文件 A 在当前窗口中
  • 堆栈跟踪或有关 Xcode/iPhone 中未处理异常的更多信息

    请原谅我的无知 但在 iPhone 模拟器中运行 iPhone 应用程序时 关于 Xcode 调试器的一些问题一直困扰着我 有时 当我在 Interface Builder 中搞砸一些东西时 我会在运行时遇到未处理的异常 然后被扔回 Xco
  • 无法使用react js将文件上传到djangorest框架

    我正在使用 React Js 将图像上传到 django Restframework 在这里我使用 fetch API 发送 post 请求 Eapp jsx import React Component from react class
  • 过滤至少有两个模式匹配的地方

    我的 data table 中有很多文本数据 我有几个我感兴趣的文本模式 我想对表格进行子集化 以便它显示匹配的文本至少两个的模式 由于某些模式已经是非此即彼的事实 这使得情况变得更加复杂 例如 paul john 我想我要么想要一个表示在
  • 如何将当前行的值除以下一行的值?

    在 Spark Sql 1 6 版本中 使用DataFrames 有没有一种方法可以计算特定列的每一行当前行与下一行相除的分数 例如 如果我有一个只有一列的表 如下所示 Age 100 50 20 4 我想要以下输出 Franction 2
  • 如何显示下一张/上一张卡片的RecyclerView的一部分

    实现此功能的最佳策略是什么 我有一个带有卡片的水平 RecyclerView 每张卡片都会填满整个屏幕 但我希望它显示下一张卡片和上一张卡片 如果它有多个项目 的一部分 我知道我可以通过设置我的卡来实现这一点android layout w