草庐IT

android - 可滚动的 Recyclerview 水平和垂直景观

coder 2023-12-22 原文

当我使用 ScrollView 和 Horizo​​ntalScrollView 使水平和垂直滚动成为可能并切换到横向时,RecyclerView 不会像纵向那样填满屏幕。

我在一行布局中使用元素的相对宽度,并且在纵向方向上一切看起来都不错。

fragment 布局

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:scrollbars="vertical"
    android:fillViewport="true">
    <HorizontalScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/table_border">
        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/tableView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:scrollbarStyle="outsideOverlay"
            android:scrollbars="horizontal"
            android:background="@drawable/table_border"
            tools:listitem="@layout/table_inventory_row"
            />
    </HorizontalScrollView>

</ScrollView>

单行布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="70dp"
    android:weightSum="1"
    android:orientation="horizontal">
    <TextView
        android:id="@+id/txtId"
        android:layout_weight=".15"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_gravity="top"
        android:text="@string/id"
        android:textSize="18sp" />
    <TextView
        android:id="@+id/txtManager"
        android:layout_width="0dp"
        android:layout_weight=".25"
        android:layout_height="match_parent"
        android:layout_gravity="top"
        android:text="@string/manager"
        android:textSize="18sp" />

    <TextView
        android:id="@+id/txtCreatedDate"
        android:layout_width="0dp"
        android:layout_weight=".25"
        android:layout_height="match_parent"
        android:layout_gravity="top"
        android:text="@string/created_on"
        android:textAlignment="center"
        android:textSize="18sp" />

    <TextView
        android:id="@+id/txtExecutionDate"
        android:layout_width="0dp"
        android:layout_weight=".25"
        android:layout_height="match_parent"
        android:layout_gravity="top"
        android:text="@string/executed_on"
        android:textAlignment="center"
        android:textSize="18sp" />

    <TextView
        android:id="@+id/txtDone"
        android:layout_width="0dp"
        android:layout_weight=".1"
        android:layout_height="match_parent"
        android:layout_gravity="top"
        android:text="@string/is_done"
        android:textAlignment="center"
        android:textSize="18sp" />
</LinearLayout>
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

            View itemView = LayoutInflater.
                    from(parent.getContext()).
                    inflate(R.layout.table_inventory_row, parent, false);
            return new RowViewHolder(itemView);

    }

风景 https://imgur.com/U2Vzwuh

肖像 https://imgur.com/5VaEJ6S https://imgur.com/97WGJ1n

正如您在屏幕截图中看到的,我已将蓝色边框放置到水平滚动条上,它占据了整个屏幕,但 RecyclerView 与宽度不匹配。

如何让 RecyclerView 占据父级的整个宽度?

最佳答案

您的问题是如何创建每一行。您得到的正是您所要求的。行的大小都相同。当您处于纵向模式时,您的回收站 View 大于屏幕宽度。但是,在横向模式下,您的行大小完全相同,但不会覆盖整个屏幕宽度。

您应该做的是在 TextView 宽度上使用 wrap_content,而不是设置粗细。当您设置重量时,您正在创建一个静态尺寸。使用 wrap_content 您将包装所有内容。

此外,在您的 fragment 中,请确保在旋转时创建 View 的新实例:

Fragment.setRetainInstance(false); 

关于android - 可滚动的 Recyclerview 水平和垂直景观,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57382921/

有关android - 可滚动的 Recyclerview 水平和垂直景观的更多相关文章

  1. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  2. ruby - 在 Ruby 中,垂直线是什么? - 2

    1.upto(9){|x|printx}为什么这行不通?{printx|x}}y呢? 最佳答案 它用于传递给您的block的参数。即在您的示例中,upto将使用1到9中的每个数字调用您的block,当前值可作为x获得。block参数可以有任何名称,就像方法参数一样。例如1.upto(9){|num|putsnum是有效的。就像一个方法的参数一样,一个block也可以有多个参数。例如hash.each_pair{|key,value|puts"#{key}is#{value}"} 关于ru

  3. ruby-on-rails - Ruby on Rails 中的水平数据库扩展 - 2

    我有一个RubyonRails应用程序和一个具有以下结构的PostgreSQL数据库:classA只有几个A,而且增长缓慢(比如一个月5个)。每个A有数千个B,每个B有数万个C(因此每个A有数百万个C)。A是独立的,并且永远不会同时需要来自不同A的B和C(即在同一查询中)。我的问题是现在我只有几个A,ActiveRecord查询需要很长时间。当C的表有数千万行时,查询将永远无法进行。我正在考虑水平扩展数据库(即A的一张表,B的一张表和每个A的一张C的表)。但我不知道该怎么做。我猜这是一种分片,但我无法弄清楚如何动态创建数据库表并使用ActiveRecord访问数据(如果该表取决于我正在

  4. ruby-on-rails - Ruby on Rails 平均水平? - 2

    有没有一种简单的方法可以获取集合中某个属性的平均值?例如,每个用户都有一个分数。给定一组用户(@users),您如何获得该组的平均分?有没有类似@users.average(:score)的东西?我想我在数据库字段中遇到过类似的东西,但我需要它来处理集合...... 最佳答案 对于你的问题,实际上可以这样做:@users.collect(&:score).sum.to_f/@users.lengthif@users.length>0早些时候我认为,@users.collect(&:score).average会起作用。对于数据库字段

  5. ruby - 绕过 Element 的方法无法滚动到 View 中 - Watir-webdriver with Ruby - 2

    因此,我们的页面中有以下代码:OnOff这是2个单选按钮。'开和关'。“关闭”是默认值。使用Watir-webdriver和Ruby,我们想要选择“打开”单选按钮。我们这样做:browser.radio(:id=>"HasRegistration_true").set但在这样做时,我们得到以下错误:`WebElement.clickElement':Elementcannotbescrolledintoview:[objectHTMLInputElement](Selenium::WebDriver::Error::MoveTargetOutOfBoundsError)我们知道Sele

  6. ruby - Prawn :有没有办法让一个盒子里的所有内容垂直对齐? - 2

    我正在尝试将一些内容垂直居中放置在bounding_box中。对于单个文本,这没问题:bounding_box([0,bounds.top],:width=>pdf.bounds.right,:height=>pdf.bounds.top)dotext"verticallyalignedinthesurroundingbox",:valign=>:centerend但是如果我的边界框中有多个元素,我该怎么办:bounding_box([0,bounds.top],:width=>pdf.bounds.right,:height=>pdf.bounds.top)dotext"vertic

  7. Android Studio开发之使用内容组件Content获取通讯信息讲解及实战(附源码 包括添加手机联系人和发短信) - 2

    运行有问题或需要源码请点赞关注收藏后评论区留言一、利用ContentResolver读写联系人在实际开发中,普通App很少会开放数据接口给其他应用访问。内容组件能够派上用场的情况往往是App想要访问系统应用的通讯数据,比如查看联系人,短信,通话记录等等,以及对这些通讯数据及逆行增删改查。首先要给AndroidMaifest.xml中添加响应的权限配置 下面是往手机通讯录添加联系人信息的例子效果如下分成三个步骤先查出联系人的基本信息,然后查询联系人号码,再查询联系人邮箱代码 ContactAddActivity类packagecom.example.chapter07;importandroid

  8. Android 10.0 设置默认launcher后安装另外launcher后默认Launcher失效的功能修复 - 2

    1.前言 在10.0的系统rom定制化开发中,在系统中有多个launcher的时候,会在开机进入launcher的时候弹窗launcher列表,让用户选择进入哪个launcher,这样显得特别的不方便所以产品开发中,要求用RoleManager的相关api来设置默认Launcher,但是在设置完默认Launcher以后,在安装一款Launcher的时候,默认Launcher就会失效,在系统设置的默认应用中Launcher选项就为空,点击home键的时候会弹出默认Launcher列表,让选择进入哪个默认Launcher.所以需要从安装Launcher的流程来分析相关的设置。来解决问题设置默认La

  9. AiBote 2022 新研发的自动化框架,支持 Android 和 Windows 系统。速度非常快 - 2

    Ai-Bot基于流行的Node.js和JavaScript语言的一款新自动化框架,支持Windows和Android自动化。1、Windowsxpath元素定位算法支持支持Windows应用、.NET、WPF、Qt、Java和Electron客户端程序和ie、edgechrome浏览器2、Android支持原生APP和H5界面,元素定位速度是appium十倍,无线远程自动化操作多台安卓设备3、基于opencv图色算法,支持找图和多点找色,1080*2340全分辨率找图50MS以内4、内置免费OCR人工智能技术,无限制获取图片文字和找字功能。5、框架协议开源,除官方node.jsSDK外,用户可

  10. Android Gradle 7.1+新版本依赖变化 - 2

    前一段时间由于工作需要把可爱的小雪狐舍弃了,找到了小蜜蜂。但是新版本的小蜜蜂出现了很多和旧版本不一样的位置。1.功能位置迁移,原来在工程build.gradle的buildscript和allprojects移动至setting.gradle并改名为pluginManagement和dependencyResolutionManagement。里面的东西依旧可以按照原来的copy过来。pluginManagement{repositories{gradlePluginPortal()google()mavenCentral()}}dependencyResolutionManagement{r

随机推荐