如何在放置在约束布局内的 NestedScrollView 中添加回收器视图,尝试添加回收器视图但未成功

Posted

技术标签:

【中文标题】如何在放置在约束布局内的 NestedScrollView 中添加回收器视图,尝试添加回收器视图但未成功【英文标题】:How to add Recycler View inside the NestedScrollView which is placed inside a constraint layout, tried to add recycler view but not getting succesful 【发布时间】:2021-11-19 17:26:33 【问题描述】:

我正在尝试在约束布局内的NestedScrollView 中添加RecyclerView,但它没有加起来,即RecyclerView 即使加起来也没有出现,请帮助我,我是添加它的 XML 代码。

我在做什么

    在约束布局内添加NestedScrollView,并在NestedScrollView内的线性布局下方添加RecyclerView

     <layout xmlns:tools="http://schemas.android.com/tools"
         xmlns:android="http://schemas.android.com/apk/res/android"
         xmlns:app="http://schemas.android.com/apk/res-auto">
    
         <androidx.constraintlayout.widget.ConstraintLayout
             android:layout_
             android:layout_
    
             tools:context=".ui.MainFragment">
    
             <include
                 android:id="@+id/toolbar"
                 layout="@layout/toolbar_default_back"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toTopOf="parent" />
    
             <androidx.core.widget.NestedScrollView
                 android:id="@+id/scrollview"
                 android:layout_
                 android:layout_
                 app:layout_constraintBottom_toBottomOf="parent"
                 app:layout_constraintEnd_toEndOf="parent"
    
                 android:fillViewport="true"
    
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toBottomOf="@id/toolbar">
    
                 <LinearLayout
                     android:id="@+id/linear_layout"
                     android:layout_
                     android:layout_
                     android:layout_marginStart="20dp"
                     android:layout_marginTop="10dp"
                     android:orientation="horizontal"
                     app:layout_constraintEnd_toEndOf="parent"
                     app:layout_constraintStart_toStartOf="parent"
                     app:layout_constraintTop_toTopOf="parent">
    
                     <ImageView
                         android:id="@+id/imageView13"
                         android:layout_
                         android:layout_
                         app:srcCompat="@drawable/ic_baseline_person_add"
                         tools:layout_editor_absoluteX="13dp"
                         tools:layout_editor_absoluteY="14dp" />
    
                     <TextView
                         android:id="@+id/textView42"
                         android:layout_
                         android:layout_
                         android:layout_marginStart="10dp"
                         android:layout_marginTop="8dp"
                         android:layout_weight="1"
                         android:text="Received"
                         android:textSize="18sp" />
                 </LinearLayout>
    
                 <androidx.recyclerview.widget.RecyclerView
                     android:id="@+id/recycler_view"
                     android:layout_
                     android:layout_>
    
    
                 </androidx.recyclerview.widget.RecyclerView>
    
             </androidx.core.widget.NestedScrollView>
    
    
         </androidx.constraintlayout.widget.ConstraintLayout>
     </layout>
    

【问题讨论】:

【参考方案1】:

问题是NestedScrollView里面有两个直接视图,并且`NestedScrollView里面应该有一个根布局,然后你可以在这个根里面嵌套任何其他布局。

要解决您的问题,您必须将 LinearLayoutRecyclerView 包装在任意选择为 LinearLayout 的根中:

<layout xmlns:tools="http://schemas.android.com/tools"
 xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto">

 <androidx.constraintlayout.widget.ConstraintLayout
     android:layout_
     android:layout_

     tools:context=".ui.MainFragment">

     <include
         android:id="@+id/toolbar"
         layout="@layout/toolbar_default_back"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toTopOf="parent" />

     <androidx.core.widget.NestedScrollView
         android:id="@+id/scrollview"
         android:layout_
         android:layout_
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
         android:fillViewport="true"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toBottomOf="@id/toolbar">


        <LinearLayout
            android:layout_
            android:layout_
            android:orientation="vertical">

             <LinearLayout
                 android:id="@+id/linear_layout"
                 android:layout_
                 android:layout_
                 android:layout_marginStart="20dp"
                 android:layout_marginTop="10dp"
                 android:orientation="horizontal"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toTopOf="parent">

                 <ImageView
                     android:id="@+id/imageView13"
                     android:layout_
                     android:layout_
                     app:srcCompat="@drawable/ic_baseline_person_add"
                     tools:layout_editor_absoluteX="13dp"
                     tools:layout_editor_absoluteY="14dp" />

                 <TextView
                     android:id="@+id/textView42"
                     android:layout_
                     android:layout_
                     android:layout_marginStart="10dp"
                     android:layout_marginTop="8dp"
                     android:layout_weight="1"
                     android:text="Received"
                     android:textSize="18sp" />
             </LinearLayout>

             <androidx.recyclerview.widget.RecyclerView
                 android:id="@+id/recycler_view"
                 android:layout_
                 android:layout_/>

        </LinearLayout>

     </androidx.core.widget.NestedScrollView>


 </androidx.constraintlayout.widget.ConstraintLayout>
</layout>

【讨论】:

非常感谢您回答我的问题,请您告诉我们应该从哪里了解更多有关布局的信息,我之前不了解nestedscroll 视图的这些属性。 @LavishGarg 很高兴能帮上忙.. 真实的地方总是the documentation,但您可以四处寻找中等文章或任何正宗的安卓课程.. Android 现在趋势material design 和@987654323 @..如果解决了您的问题,请采纳答案 你能看看这个吗,你能帮我解决这个问题吗,我还没有找到任何这样好的教程来访问android 11中的后台位置。问题链接:-***.com/questions/69824318/… 嘿@LavishGarg 我希望我能,但借口我没有深入了解位置服务,希望其他人可以帮助你。

以上是关于如何在放置在约束布局内的 NestedScrollView 中添加回收器视图,尝试添加回收器视图但未成功的主要内容,如果未能解决你的问题,请参考以下文章

为约束布局内的布局设置最小百分比高度

滚动视图内的约束布局,总是参考线高度变化

自动布局约束未正确放置容器视图

你如何自动布局约束按钮内的通知标签?

Xcode 6 不遵守自动布局约束

在约束布局内的线性布局中将元素置于其他元素之下