android - 如何在activity的1/3部分添加recyclerview

标签 android android-recyclerview

我有一个 Activity ,其中我需要添加一个水平列表来显示应出现在 Activity 下部的图像格式。这是我的 xml 文件。

     <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.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"
        android:background="@color/white"
        android:fitsSystemWindows="true"
        tools:context=".view.quickaction.QuickActionVideoActivity">
    
        <RelativeLayout
            android:id="@+id/quick_action_video_header_contatiner"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:orientation="vertical"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent">
    
            <TextView
                android:id="@+id/quick_action_video_close"
                android:layout_width="match_parent"
                android:layout_height="25dp"
                android:layout_marginTop="20dp"
                android:text="@string/button_cancel"
                android:textColor="@color/express_purple"
                android:textSize="18dp" />
    
            <TextView
                android:id="@+id/quick_action_video_title"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@id/quick_action_video_close"
                android:layout_marginTop="30dp"
                android:fontFamily="@font/adobe_clean_bold"
                android:text="@string/quick_action_resize_video_header"
                android:textColor="@color/black_alpha_85"
                android:textSize="32dp" />
    
            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@id/quick_action_video_title"
                android:text="@string/powered_by_magicX"
                android:textColor="@color/black_alpha_85"
                android:textSize="14dp" />
        </RelativeLayout>
    
        <androidx.constraintlayout.widget.ConstraintLayout
            android:id="@+id/zoom_surface"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_marginStart="15dp"
            android:layout_marginTop="30dp"
            android:layout_marginEnd="15dp"
            android:background="@drawable/rounded_rectangle_rect"
            android:visibility="visible"
            app:layout_constraintDimensionRatio="H,5:4"
            app:layout_constraintEnd_toStartOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@id/quick_action_video_header_contatiner">
    
            <com.otaliastudios.zoom.ZoomSurfaceView
                android:id="@+id/surface_view"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_marginTop="25dp"
                android:layout_marginBottom="25dp"
                app:horizontalPanEnabled="true"
                app:verticalPanEnabled="true"
                app:zoomEnabled="true" />
    
        </androidx.constraintlayout.widget.ConstraintLayout>
    
        <RelativeLayout
            android:id="@+id/relativeLayout3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/zoom_surface"
            app:layout_constraintBottom_toTopOf="@id/relativeLayout2"
            tools:ignore="MissingConstraints">
    
            <androidx.recyclerview.widget.RecyclerView
                android:id="@+id/rvList"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="15dp"
                android:orientation="horizontal"
                app:layout_constrainedHeight="true"/>
    
        </RelativeLayout>
    
        <RelativeLayout
            android:id="@+id/relativeLayout2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent">
    
            <Button
                android:id="@+id/quick_action_video_save_button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:layout_marginTop="12dp"
                android:layout_marginBottom="12dp"
                android:layout_weight="1"
                android:background="@drawable/button_bg_rounded_corners"
                android:fontFamily="@font/adobe_clean_bold"
                android:text="@string/save_share_option"
                android:textColor="@color/white_alpha_80" />
        </RelativeLayout>
    
    </androidx.constraintlayout.widget.ConstraintLayout>

它应该看起来像这样:

Recylerview at the bottom above the button

但是这个回收器 View 在加载时占据了 Activity 的整个空间和一个标题。你能告诉我这有什么问题吗? recycler-view 是否无法在此 View 中托管。

最佳答案

问题是您没有从上到下的约束,并且已将高度设置为匹配约束。但是对于这样的布局,我有一些提示..

  1. 首先使用恒定高度(例如 200 dp 左右)进行布局,然后再更改它们

  2. 遵循从上到下或从下到上的方法,即顶部的一个 View ,其他所有操作都以此为 anchor 完成

  3. 自始至终都使用约束布局。如果您使用约束布局,则不需要任何其他布局类型

 <androidx.constraintlayout.widget.ConstraintLayout
            android:id="@+id/zoom_surface"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_marginStart="15dp"
            android:layout_marginTop="30dp"
            android:layout_marginEnd="15dp"
            android:background="@drawable/rounded_rectangle_rect"
            android:visibility="visible"
            app:layout_constraintDimensionRatio="H,5:4"
            app:layout_constraintEnd_toStartOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@id/quick_action_video_header_contatiner"
app:layout_constraintBottom_toTopOf=" ">add the suitable id
    
            <com.otaliastudios.zoom.ZoomSurfaceView
                android:id="@+id/surface_view"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_marginTop="25dp"
                android:layout_marginBottom="25dp"
                app:horizontalPanEnabled="true"
                app:verticalPanEnabled="true"
                app:zoomEnabled="true" />
    
        </androidx.constraintlayout.widget.ConstraintLayout>

关于android - 如何在activity的1/3部分添加recyclerview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71994931/

相关文章:

android - RecyclerView item展开动画

java - Greenrobot EventBus 无法调度事件

android - 当字体很大时,为什么 ListView 中的相对布局无法随内容正确扩展

java - Android Studio Bumblebee,HMS Toolkit 不工作,为什么?

单击 recyclerview 项目时不会出现 Android 波纹效果

android - 如何从特定索引开始ArrayList?

java - 如何在 ListView 中无延迟地从网络下载图像?

Android 无法使用 gradle 构建工具 3.0.0-alpha2 构建发布 APK

java - 用户向 Recyclerview 添加数据

java - 延迟回收器查看每个项目的点击功能