如何在NestedScrollView内使用RecyclerView ?

如何在NestedScrollView中使用RecyclerView ? RecyclerView内容在设置适配器后不可见

更新布局代码更新。

<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">


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


<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/keyline_1">


</RelativeLayout>


<View
android:id="@+id/separator"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#e5e5e5" />


<android.support.v7.widget.RecyclerView
android:id="@+id/conversation"
android:layout_width="match_parent"
android:layout_height="wrap_content" />


</LinearLayout>


</android.support.v4.widget.NestedScrollView>
263013 次浏览

你可以使用android:fillViewport="true"NestedScrollView测量RecyclerViewRecyclerView将填充剩余的高度。所以如果你想滚动NestScrollView,你可以设置RecyclerViewminHeight

不能在嵌套滚动视图中使用回收器视图。它并不打算包含更多的可滚动视图,但因为它是滚动布局本身的子视图,所以你需要嵌套的滚动视图。我有同样的问题,但在最后我移动我的textview是一个头视图内的recyclerview,使recyclerview的协调器布局和删除嵌套滚动视图的直接子。然后我所有的问题都消失了。

将您的recyclerView替换为,

<android.support.v7.widget.RecyclerView
android:id="@+id/conversation"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:layout_width="match_parent"
android:layout_height="wrap_content" />

在这里,

app:layout_behavior="@string/appbar_scrolling_view_behavior"

会处理好剩下的事情。

还有一件事,不需要把你的recyclerView放在NestedScrollView里面

更新1

自从Android支持库23.2.0以来,为布局管理器添加了setAutoMeasureEnabled(true)方法。它使RecyclerView包装它的内容和工作就像一个魅力 http://android-developers.blogspot.ru/2016/02/android-support-library-232.html < / p >

所以只需添加如下内容:

    LayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setAutoMeasureEnabled(true);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setNestedScrollingEnabled(false);
< p > < br > 更新2 < / >强

因为27.1.0 setAutoMeasureEnabled已弃用,所以你应该用覆盖方法isAutoMeasureEnabled()提供LayoutManager的自定义实现

但是经过多次使用RecyclerView之后,我强烈建议不要在包装方式中使用它,因为这不是它的目的。尝试使用普通的单个RecyclerView与几个项目类型重构整个布局。或者使用线性布局的方法,我在下面描述作为最后的手段

< p > < br > 旧答案(不推荐)

你可以在NestedScrollView中使用RecyclerView。 首先,你应该实现你自己的自定义LinearLayoutManager,它使你的RecyclerView包装它的内容。 例如:< / p >
public class WrappingLinearLayoutManager extends LinearLayoutManager
{


public WrappingLinearLayoutManager(Context context) {
super(context);
}


private int[] mMeasuredDimension = new int[2];


@Override
public boolean canScrollVertically() {
return false;
}


@Override
public void onMeasure(RecyclerView.Recycler recycler, RecyclerView.State state,
int widthSpec, int heightSpec) {
final int widthMode = View.MeasureSpec.getMode(widthSpec);
final int heightMode = View.MeasureSpec.getMode(heightSpec);


final int widthSize = View.MeasureSpec.getSize(widthSpec);
final int heightSize = View.MeasureSpec.getSize(heightSpec);


int width = 0;
int height = 0;
for (int i = 0; i < getItemCount(); i++) {
if (getOrientation() == HORIZONTAL) {
measureScrapChild(recycler, i,
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
heightSpec,
mMeasuredDimension);


width = width + mMeasuredDimension[0];
if (i == 0) {
height = mMeasuredDimension[1];
}
} else {
measureScrapChild(recycler, i,
widthSpec,
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
mMeasuredDimension);


height = height + mMeasuredDimension[1];
if (i == 0) {
width = mMeasuredDimension[0];
}
}
}


switch (widthMode) {
case View.MeasureSpec.EXACTLY:
width = widthSize;
case View.MeasureSpec.AT_MOST:
case View.MeasureSpec.UNSPECIFIED:
}


switch (heightMode) {
case View.MeasureSpec.EXACTLY:
height = heightSize;
case View.MeasureSpec.AT_MOST:
case View.MeasureSpec.UNSPECIFIED:
}


setMeasuredDimension(width, height);
}


private void measureScrapChild(RecyclerView.Recycler recycler, int position, int widthSpec,
int heightSpec, int[] measuredDimension) {


View view = recycler.getViewForPosition(position);
if (view.getVisibility() == View.GONE) {
measuredDimension[0] = 0;
measuredDimension[1] = 0;
return;
}
// For adding Item Decor Insets to view
super.measureChildWithMargins(view, 0, 0);
RecyclerView.LayoutParams p = (RecyclerView.LayoutParams) view.getLayoutParams();
int childWidthSpec = ViewGroup.getChildMeasureSpec(
widthSpec,
getPaddingLeft() + getPaddingRight() + getDecoratedLeft(view) + getDecoratedRight(view),
p.width);
int childHeightSpec = ViewGroup.getChildMeasureSpec(
heightSpec,
getPaddingTop() + getPaddingBottom() + getDecoratedTop(view) + getDecoratedBottom(view),
p.height);
view.measure(childWidthSpec, childHeightSpec);


// Get decorated measurements
measuredDimension[0] = getDecoratedMeasuredWidth(view) + p.leftMargin + p.rightMargin;
measuredDimension[1] = getDecoratedMeasuredHeight(view) + p.bottomMargin + p.topMargin;
recycler.recycleView(view);
}
}

之后,为你的RecyclerView使用这个LayoutManager

recyclerView.setLayoutManager(new WrappingLinearLayoutManager(getContext()));

但你也应该调用这两个方法:

recyclerView.setNestedScrollingEnabled(false);
recyclerView.setHasFixedSize(false);

这里setNestedScrollingEnabled(false)禁用了RecyclerView的滚动,所以它不会拦截来自NestedScrollView的滚动事件。和setHasFixedSize(false)确定适配器内容的改变可以改变RecyclerView的大小

重要提示:这个解决方案在某些情况下有一些bug,并且在性能上有问题,所以如果你的RecyclerView中有很多项,我建议使用自定义的基于__abc1的列表视图实现,为它创建类似的Adapter,并使其行为像ListViewRecyclerView

尝试使用这个库- https://github.com/serso/android-linear-layout-manager

库的LayoutManager使RecyclerView包装其内容。在这种情况下,RecyclerView将“与内部视图一样大”,因此它将没有滚动条,用户将使用NestedScrollView的滚动能力。因此,它不会像“scrollable内部scrollable”那样模棱两可。

  1. 你需要使用23.2.0(或)以上的支持库

  2. RecyclerView的高度将是wrap_content

  3. < p > recyclerView.setNestedScrollingEnabled(false)

但是这样循环模式就行不通了。(即所有的视图将被一次加载,因为wrap_content需要完整的RecyclerView的高度,所以它将立即绘制所有的子Views。没有视图将被回收)。除非确实需要,否则尽量不要使用这种模式。尝试使用viewType并添加所有其他需要滚动到RecyclerView的视图,而不是在Scrollview中使用RecyclerView。性能影响将非常大。

为了使它简单“它只是作为LinearLayout与所有的子视图”;

这就是对我有效的方法

<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior">


<android.support.v7.widget.RecyclerView
android:id="@+id/rv_recycler_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
</android.support.v4.widget.NestedScrollView>

简单地在setAdapter之前添加recyclerView.setNestedScrollingEnabled(false);就可以了。我没有在任何地方添加app:layout_behavior="@string/appbar_scrolling_view_behavior"。没有设置任何自定义布局管理器

<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">


<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:orientation="vertical">


<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:orientation="vertical">


<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:text="Some Text..."
android:padding="15dp" />


</LinearLayout>


<LinearLayout
android:orientation="vertical"
android:padding="15dp"
android:layout_marginTop="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content">


<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Quick Links"
android:textColor="@color/black"
android:textStyle="bold"
android:textAllCaps="true"
android:paddingLeft="20dp"
android:drawableLeft="@drawable/ic_trending_up_black_24dp"
android:drawablePadding="10dp"
android:layout_marginBottom="10dp"
android:textSize="16sp"/>


<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="#efefef"/>


<android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>


</LinearLayout>


</android.support.v4.widget.NestedScrollView>

如果你正在使用RecyclerView-23.2.1或更高版本。下面的解决方案可以很好地工作:

在你的布局中添加这样的RecyclerView:

<android.support.v7.widget.RecyclerView
android:id="@+id/review_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="vertical" />

在你的java文件中:

RecyclerView mRecyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
LinearLayoutManager layoutManager=new LinearLayoutManager(getContext());
layoutManager.setAutoMeasureEnabled(true);
mRecyclerView.setLayoutManager(layoutManager);
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setAdapter(new YourListAdapter(getContext()));

这里layoutManager.setAutoMeasureEnabled(true);将完成这个任务。

查看这个问题这个开发者博客以获取更多信息。

有一个简单的测试代码,你可以检查

<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</android.support.v4.widget.NestedScrollView>

我在NestedScrollView里面有Viewpager和RecyclerView。在添加以下行之后

recyclerView.setNestedScrollingEnabled(false);
recyclerView.setHasFixedSize(false);

我解决了滚动缓慢和滚动延迟的问题。

我必须实现带有工具栏滚动的CoordinatorLayout,这花了我一整天的时间。我已经通过移除NestedScrollView工作了。我只是在根处使用RelativeLayout。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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="match_parent">


<android.support.v7.widget.RecyclerView
android:id="@+id/rv_nearby"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />


</RelativeLayout>

下面是我用来避免滚动问题的代码:

mRecyclerView = (RecyclerView) view.findViewById(android.R.id.list);
mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
mRecyclerView.getLayoutManager().setAutoMeasureEnabled(true);
mRecyclerView.setNestedScrollingEnabled(false);
mRecyclerView.setHasFixedSize(false);

我在NestedScrollView中使用了RecyclerView,它为我工作。我必须记住的唯一问题是NestedScrollView只接受一个子视图。所以在我的情况下,我使用的LienearLayout视图组,它是住房我的RecyclerView加上其他一些我需要的视图。

我经历了一个问题,把我的RecyclerView内的NestedScrollView。我意识到我的RecyclerView的内容滚动变慢了。

我后来意识到我的RecyclerView正在接收滚动事件,因此与NestedScrollView的滚动行为相冲突。

所以为了解决这个问题,我不得不用这个方法movieListNewRecyclerView.setNestedScrollingEnabled(false);禁用我的RecyclerView的滚动功能

你可以在我的Instagram上查看我实际做了什么。这是我的instagram账号elix03

点击这张图片看看我做了什么

RecyclerView与NestedScrollView

    <android.support.v7.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />

保持recyclerview的回收特性并避免recyclerview加载所有数据的一个解决方案是在recyclerview本身设置一个固定的高度。通过这样做,recyclerview只能加载它的高度所能显示给用户的东西,这样当你滚动到底部/顶部时,循环它的元素。

有很多很好的答案。关键是你必须将nestedScrollingEnabled设置为false。如上所述,你可以在java代码中做到这一点:

mRecyclerView.setNestedScrollingEnabled(false);

但是你也有机会在xml代码(android:nestedScrollingEnabled="false")中设置相同的属性:

 <android.support.v7.widget.RecyclerView
android:id="@+id/recyclerview"
android:nestedScrollingEnabled="false"
android:layout_width="match_parent"
android:layout_height="match_parent" />

对于androidx,它被称为androidx.core.widget.NestedScrollView -它像黄油一样滚动,属性isScrollContainermeasureAllChildren启用:

<!-- Scrolling Content -->
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"


android:isScrollContainer="true"
android:measureAllChildren="true"


app:layout_behavior="@string/appbar_scrolling_view_behavior">


<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fastScrollEnabled="true"
android:scrollbarStyle="insideInset"
android:scrollbars="vertical"
android:splitMotionEvents="false"
android:verticalScrollbarPosition="right"/>


</androidx.core.widget.NestedScrollView>

如果你在NestedScrollView中使用RecyclerView ScrollListener, addOnScrollListener监听器将不能正常工作。

使用这段代码。

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
......
}
});

此代码在NestedScrollView中工作良好。

谢谢

在NestedScrollView中不使用recyclerView。这可能会导致级联问题! 我建议使用ItemViewTypes在RecyclerView处理多种类型的视图。 只需添加一个RecyclerView与match_parent宽度和高度。然后在你的recyclerViewAdapter覆盖getItemViewType和使用position处理什么布局被膨胀。之后,你可以使用onBindViewHolder方法来处理你的视图持有者

< a href = " https://stacklearn。Ir " rel="nofollow noreferrer">https://stacklearn.ir

nestedScrollView.setNestedScrollingEnabled(true);


mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
//...
}
});




<androidx.core.widget.NestedScrollView
android:id="@+id/nested"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:layout_below="@id/appBarLayout_orders"
app:layout_behavior="@string/appbar_scrolling_view_behavior">


<androidx.constraintlayout.widget.ConstraintLayout ...


<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>

我已经使用了这个很棒的扩展(写在kotlin,但也可以在Java中使用)

https://github.com/Widgetlabs/expedition-nestedscrollview

基本上,你可以在任何包中获得NestedRecyclerView,比如在你的项目中utils,然后创建你的recyclerview

 <com.your_package.utils.NestedRecyclerView
android:id="@+id/rv_test"
android:layout_width="match_parent"
android:layout_height="match_parent" />

看看Marc Knaup写的这篇很棒的文章

https://medium.com/widgetlabs-engineering/scrollable-nestedscrollviews-inside-recyclerview-ca65050d828a

在我的例子中,NestedScrollview的子元素是ConstraintLayout。它不像预期的那样工作,我把它换成了线性布局。也许它能帮助别人。

<androidx.core.widget.NestedScrollView
android:id="@+id/nestedScrollView"
android:layout_width="match_parent"
android:layout_height="match_parent">


<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:descendantFocusability="blocksDescendants">


<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:nestedScrollingEnabled="false" />


</LinearLayout>


</androidx.core.widget.NestedScrollView>

如果你想在NestedScrollView中使用RecyclerView,这是一个简单的技巧,只需设置:

RecyclerView

  • < p > recyclerView.setHasFixedSize (false) (java / kt)

  • < p > android: nestedScrollingEnabled =“false"

  • < p > android: layout_height =“wrap_content"

  • < p > android: overScrollMode =“never"

NestedScrollView

  • android: fillViewport =“true"

这是我的工作,你可以使用许多RecyclerView在NestedScrollView与此。

就我而言,这对我很有效

  • android:fillViewport="true"放入NestedScrollView中。

  • 使RecyclerView的高度为wrap_content,即android:layout_height="wrap_content"

  • 将此添加到RecyclerView android:nestedScrollingEnabled="false"

以编程方式,在Kotlin类中

recyclerView.isNestedScrollingEnabled = false

mRecyclerView.setHasFixedSize(false)

至少早在Material Components 1.3.0-alpha03中,RecyclerView是否嵌套并不重要(在ScrollView或NestedScrollView之外的东西中)。只要把app:layout_behavior="@string/appbar_scrolling_view_behavior"放在它的顶层父元素上,它是CoordinatorLayout中AppBarLayout的兄弟元素。

当我在Jetpack导航中使用单个活动架构时,这已经为我工作了,其中所有片段都共享来自活动布局的相同AppBar。我将FragmentContainer作为CoordinatorLayout的直接子,它也包含AppBarLayout,如下所示。各个片段中的RecyclerViews正常滚动,AppBar折叠起来并按预期重新出现。

    <androidx.coordinatorlayout.widget.CoordinatorLayout
android:id="@+id/coordinatorLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">


<androidx.fragment.app.FragmentContainerView
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
app:defaultNavHost="true"
app:navGraph="@navigation/mobile_navigation"/>


<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:liftOnScroll="true">


<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
android:theme="?attr/actionBarTheme"
app:layout_scrollFlags="scroll|enterAlways|snap" />


</com.google.android.material.appbar.AppBarLayout>


</androidx.coordinatorlayout.widget.CoordinatorLayout>

如果每个片段将其RecyclerView的ID传递给Fragment.onResume中的AppBarLayout.liftOnScrollTargetViewId,则liftOnScroll(用于应用程序栏在页面顶部时看起来像零高度)有效。如果Fragment没有滚动,则传递0。

您可以使用我的示例代码

    <?xml version="1.0" encoding="utf-8"?>
<layout 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">


<LinearLayout
android:id="@+id/fl_all_brand"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".view.fragment.AllBrandFragment">


<androidx.core.widget.NestedScrollView
android:id="@+id/parent"
android:layout_width="match_parent"
android:layout_height="match_parent"
>


<LinearLayout
android:id="@+id/fl_all_brand1"
android:layout_width="match_parent"
android:layout_height="wrap_content"


android:orientation="vertical">




<!--<include layout="@layout/content_home" />-->


<TextView
android:id="@+id/tv_title"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/_15sdp"
android:layout_marginTop="@dimen/_20sdp"
android:fontFamily="@font/lexend_semibold"
android:text="@string/DISPLAY_LIGHTS"
android:textColor="@color/gray_scale_placehold"
android:textSize="@dimen/_16ssp" />




<LinearLayout
android:id="@+id/recyclerLayout"
android:layout_width="match_parent"
android:layout_height="@dimen/_280sdp">




<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerviewobj"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/_10sdp"
android:layout_marginTop="@dimen/_20sdp"
android:layout_marginEnd="@dimen/_10sdp"
android:orientation="horizontal"
android:nestedScrollingEnabled="false"
android:layout_marginBottom="@dimen/_20sdp"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"


/>
</LinearLayout>






<TextView
android:id="@+id/notfound"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/_15sdp"
android:layout_marginTop="@dimen/_20sdp"
android:layout_marginBottom="@dimen/_20sdp"
android:fontFamily="@font/lexend_semibold"
android:text="@string/DISPLAY_LIGHTS"
android:gravity="center"
android:visibility="gone"
android:textColor="?attr/hintTextColors"
android:textSize="@dimen/_12ssp" />
<TextView
android:id="@+id/recommendTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/addDeviceLayout"
android:layout_below="@+id/recyclerviewobj"
android:layout_marginStart="@dimen/_16sdp"
android:layout_marginTop="@dimen/_7sdp"
android:fontFamily="@font/lexend_semibold"
android:text="@string/RECOMMENDATION"
android:textColor="@color/gray_scale_placehold"
android:textSize="@dimen/_16ssp" />


<LinearLayout
android:id="@+id/addDeviceLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/createRoomLayout"
android:layout_marginTop="@dimen/_14sdp"
android:background="?attr/buttonTextColor"
android:orientation="vertical"
tools:visibility="visible">


<ImageView
android:id="@+id/addBtn"
android:layout_width="@dimen/_28sdp"
android:layout_height="@dimen/_28sdp"
android:layout_marginStart="@dimen/_16sdp"
android:layout_marginTop="@dimen/_8sdp"
android:src="@drawable/ic_thermostates_icon"
app:tint="?attr/colorPrimaryDark" />


<TextView
android:id="@+id/addDevice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_16sdp"
android:layout_marginTop="@dimen/_5sdp"
android:fontFamily="@font/lexend_bold"
android:text="@string/PROGRAM_DISPLAY_SENSOR_PLUGS"
android:textColor="?attr/colorPrimaryDark"
android:textSize="@dimen/_12ssp" />


<TextView
android:id="@+id/summry"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_16sdp"
android:layout_marginTop="@dimen/_8sdp"
android:layout_marginBottom="@dimen/_6sdp"
android:fontFamily="@font/lexend_medium"
android:text="@string/DISPLAY_SENSOR_SUB_TITLE"
android:textColor="?attr/secondaryTextColor"
android:textSize="@dimen/_9ssp" />


<RelativeLayout
android:id="@+id/container3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_6sdp"
android:layout_marginTop="@dimen/_6sdp"
android:layout_marginBottom="@dimen/_10sdp">


<TextView
android:id="@+id/get_started"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="@dimen/_10sdp"
android:fontFamily="@font/lexend_semibold"
android:text="@string/RECOMMENDED_GROUP"
android:textAllCaps="true"
android:textSize="@dimen/_9ssp" />


<ImageView
android:id="@+id/forward_arrow"
android:layout_width="@dimen/_16sdp"
android:layout_height="@dimen/_16sdp"
android:layout_alignParentEnd="true"
android:layout_marginRight="@dimen/_20sdp"
android:src="@drawable/ic_forward_arrow"
app:tint="?attr/colorPrimary" />


</RelativeLayout>
</LinearLayout>


<LinearLayout
android:id="@+id/createRoomLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginTop="@dimen/_9sdp"
android:layout_marginBottom="@dimen/_20sdp"
android:background="?attr/buttonTextColor"
android:orientation="vertical"
tools:visibility="visible">


<ImageView
android:id="@+id/addBtnRoom"
android:layout_width="@dimen/_28sdp"
android:layout_height="@dimen/_28sdp"
android:layout_marginStart="@dimen/_16sdp"
android:layout_marginTop="@dimen/_8sdp"
android:src="@drawable/rgb_light_new"
app:tint="?attr/colorPrimaryDark" />


<TextView
android:id="@+id/addRooms"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_16sdp"
android:layout_marginTop="@dimen/_5sdp"
android:fontFamily="@font/lexend_bold"
android:text="@string/DISPLAY_RGBW"
android:textColor="?attr/colorPrimaryDark"
android:textSize="@dimen/_12ssp" />


<TextView
android:id="@+id/summry1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_16sdp"
android:layout_marginTop="@dimen/_8sdp"
android:layout_marginBottom="@dimen/_6sdp"
android:fontFamily="@font/lexend_medium"
android:text="@string/PROGRAM_DISPLAY_RGB_MSG"
android:textColor="?attr/secondaryTextColor"
android:textSize="@dimen/_9ssp" />


<RelativeLayout
android:id="@+id/container99"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_6sdp"
android:layout_marginTop="@dimen/_6sdp"
android:layout_marginBottom="@dimen/_10sdp">


<TextView
android:id="@+id/get_started_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="@dimen/_10sdp"
android:fontFamily="@font/lexend_semibold"
android:text="@string/RECOMMENDED_GROUP"
android:textAllCaps="true"
android:textSize="@dimen/_9ssp" />


<ImageView
android:id="@+id/forward_arrow1"
android:layout_width="@dimen/_16sdp"
android:layout_height="@dimen/_16sdp"
android:layout_alignParentEnd="true"
android:layout_marginRight="@dimen/_20sdp"
android:src="@drawable/ic_forward_arrow"
app:tint="?attr/colorPrimary" />


</RelativeLayout>
</LinearLayout>








</LinearLayout>


</androidx.core.widget.NestedScrollView>
</LinearLayout>


</layout>

这里使用recyclerview的属性

app:layout_behavior="@string/appbar_scrolling_view_behavior"

并像这样关闭recyclerview嵌套滚动

android:nestedScrollingEnabled="false"