【问题标题】:How to make the layout scroll along with the recyclerview如何使布局与recyclerview一起滚动
【发布时间】:2021-05-17 20:51:08
【问题描述】:

我想知道如何像 facebook 一样进行此滚动,您可以在其中滚动 recyclerview 并且上面的视图会滚动到屏幕外,我已经尝试使用 nestedscroll 并将 recyclerview 作为 wrap_content,但是它会加载之前的所有项目打开它变得非常沉重,实际上应用程序甚至无法打开,崩溃一切......我也会发布我的布局代码,记住这个布局在一个片段内,就像 facebook 就在那里,使用viewpager 及其内部有链接到 tablayout 和自定义工具栏的片段,然后这个带有视图的 recyclerview 位于片段中的布局中[在此处输入链接描述][1]

例如GIF >> [1]:https://giphy.com/gifs/1g6zXNE3EE5MLuE7Cy

我的带有 recyclerview 的 xml 代码(这是片段布局)>>

    <?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:tools="http://schemas.android.com/tools"
    android:fillViewport="true">
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        tools:context=".fragments.Home">

        <LinearLayout
            android:id="@+id/linearLayout4"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:background="@color/white"
            android:orientation="vertical"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent">

            <androidx.appcompat.widget.LinearLayoutCompat
                android:id="@+id/linearLayoutCompat"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="16dp">

                <de.hdodenhof.circleimageview.CircleImageView
                    android:layout_width="50dp"
                    android:layout_height="50dp"
                    android:layout_marginStart="8dp"
                    android:layout_marginEnd="8dp"
                    android:src="@mipmap/ic_launcher" />

                <Button
                    android:id="@+id/button"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_marginTop="4dp"
                    android:layout_marginEnd="8dp"
                    android:layout_marginBottom="4dp"
                    android:background="@drawable/retangulo_pontas_arredondadas"
                    android:text="No que você esta pensando?"
                    android:textAlignment="viewStart"
                    android:textAppearance="@style/botaobraco" />

            </androidx.appcompat.widget.LinearLayoutCompat>

            <LinearLayout
                android:id="@+id/linearLayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="8dp"
                android:orientation="horizontal">

                <Button
                    android:id="@+id/button4"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginEnd="1dp"
                    android:layout_weight="1"
                    android:text="Foto"
                    android:textAlignment="viewStart"
                    app:icon="@drawable/photo_icon" />

                <Button
                    android:id="@+id/button5"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="1dp"
                    android:layout_weight="1"
                    android:text="Video"
                    android:textAlignment="viewStart"
                    app:icon="@drawable/video_icon" />
            </LinearLayout>
        </LinearLayout>

        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/recyclerViewPubs"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_marginBottom="1dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/linearLayout4" />

    </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>

带有 viewpager 和工具栏的我的 xml(接收者的片段)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical">

    <include layout="@layout/toolbar"
        app:layout_scrollFlags="scroll|enterAlways"/>

    <com.google.android.material.tabs.TabLayout
        android:id="@+id/tabLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:elevation="4dp"
        android:theme="@style/toolbarstyle"
        app:tabMode="fixed" />

    <androidx.viewpager.widget.ViewPager
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />

</LinearLayout>

在recyclerview中显示的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="wrap_content">

    <androidx.cardview.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:layout_marginBottom="8dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <ImageView
                android:id="@+id/image_pub"
                android:layout_width="match_parent"
                android:layout_height="250dp"
                android:layout_marginBottom="8dp"
                android:scaleType="centerCrop"
                app:layout_constraintBottom_toTopOf="@+id/linearLayout2"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                app:layout_constraintVertical_bias="0.0"
                app:srcCompat="@drawable/ds" />

            <androidx.constraintlayout.widget.ConstraintLayout
                android:id="@+id/linearLayout2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="8dp"
                android:background="@drawable/borda_abaixo"
                android:orientation="vertical"
                app:layout_constraintBottom_toTopOf="@+id/linearLayout3"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/image_pub">


                <de.hdodenhof.circleimageview.CircleImageView
                    android:id="@+id/image_author_pub"
                    android:layout_width="40dp"
                    android:layout_height="40dp"
                    android:layout_marginStart="8dp"
                    android:layout_marginTop="8dp"
                    android:src="@mipmap/ic_launcher"
                    app:layout_constraintBottom_toTopOf="@+id/desc_pub"
                    app:layout_constraintEnd_toStartOf="@+id/name_author_pub"
                    app:layout_constraintHorizontal_bias="0.0"
                    app:layout_constraintHorizontal_chainStyle="packed"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent"
                    app:layout_constraintVertical_chainStyle="packed" />

                <TextView
                    android:id="@+id/name_author_pub"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="8dp"
                    android:layout_marginEnd="8dp"
                    android:text="@string/app_name"
                    app:layout_constraintBottom_toBottomOf="@+id/image_author_pub"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintHorizontal_bias="0.5"
                    app:layout_constraintStart_toEndOf="@+id/image_author_pub"
                    app:layout_constraintTop_toTopOf="@+id/image_author_pub" />


                <TextView
                    android:id="@+id/desc_pub"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="8dp"
                    android:layout_marginEnd="8dp"
                    android:maxLines="10"
                    android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas placerat tristique nulla scelerisque faucibus. Cras sollicitudin consequat risus id cursus. Nunc sit amet condimentum dui. Nam dictum lacinia nibh, eget vehicula sapien. Vestibulum eget tortor at nisl faucibus cursus eget quis arcu. Maecenas egestas, nulla id accumsan eleifend, mauris leo ornare elit, quis porta turpis metus eget tortor. Donec ultrices neque nec aliquet commodo. In dolor lorem, lobortis vel tincidunt ut, bibendum vel ligula. Nulla facilisi."
                    android:textSize="18sp"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintHorizontal_bias="0.0"
                    app:layout_constraintStart_toStartOf="@+id/image_author_pub"
                    app:layout_constraintTop_toBottomOf="@+id/image_author_pub" />

                <TextView
                    android:id="@+id/more_desc_pub"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginEnd="8dp"
                    android:layout_marginBottom="8dp"
                    android:drawableEnd="@android:drawable/arrow_down_float"
                    android:text="ver mais"
                    app:layout_constraintBottom_toBottomOf="parent"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintHorizontal_bias="1.0"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toBottomOf="@+id/desc_pub" />
            </androidx.constraintlayout.widget.ConstraintLayout>

            <LinearLayout
                android:id="@+id/linearLayout3"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/linearLayout2">

                <Button
                    android:id="@+id/curtir_pub"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginEnd="1dp"
                    android:layout_weight="1"
                    android:text="Curtir"
                    android:textColor="@color/black" />

                <Button
                    android:id="@+id/comentar_pub"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="1dp"
                    android:layout_weight="1"
                    android:text="Comentar"
                    android:textColor="@color/black" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="horizontal"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/linearLayout3">

                <TextView
                    android:id="@+id/curtidas_pub"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="8dp"
                    android:layout_weight="1"
                    android:text="800 Curtidas" />

                <TextView
                    android:id="@+id/coments_pub"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginEnd="8dp"
                    android:layout_weight="1"
                    android:text="300 Comentarios"
                    android:textAlignment="viewEnd" />
            </LinearLayout>

        </androidx.constraintlayout.widget.ConstraintLayout>

    </androidx.cardview.widget.CardView>

</androidx.constraintlayout.widget.ConstraintLayout>

【问题讨论】:

    标签: android xml animation android-recyclerview


    【解决方案1】:

    查看协调器布局,这就是您共享的 GIF 中的滚动和过渡所需要的。

    【讨论】:

    • 我已经尝试过,已经研究过,甚至下载了他们使用的应用程序,但我不能以一种像样的方式做到这一点,如果你可以通过给我小费或发布代码 sn-ps 和解释来帮助我,我会接受
    【解决方案2】:

    我设法解决了这个问题,为此我必须在 RecyclerView 中使用 MultiView,任何我想要的人都会留下链接来解释它是如何完成的。

    Link

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-13
      • 2016-04-01
      • 2020-09-07
      • 1970-01-01
      • 2015-09-03
      • 1970-01-01
      • 2021-07-09
      • 1970-01-01
      相关资源
      最近更新 更多