当前位置: 首页 > 知识库问答 >
问题:

如何将RecycerView放入NestedScrollView中?

壤驷深
2023-03-14
public class RecyclerView extends ViewGroup implements ScrollingView, NestedScrollingChild

但是大多数投票解决方案的问题是,它调用RecycerView的所有项,因此,例如,如果它是一个无休止的RecycerView,当用户到达列表的末尾时,您希望发出网络请求,那么使用该解决方案RecycerView会重复调用server,因为它会自动到达RecycerView的最后一项。

不管怎样,如何设置参数以便我可以将RecyerView放入nestedscrollview中(实际上,我希望将像framelayout或RelationVelayout这样的viewgroup作为nestedscrollview的单个公子,然后将recyclerview放入framelayout或RelationVelayout中)

当我将RecycerView放入NestedScrollView中时,没有任何可显示的内容。

虽然BNK的答案不正确,但BNK已经尝试了很多。所以我给他赏金。仍在寻找好的解决方案....

共有1个答案

丰誉
2023-03-14

以下是我新更新的答案:

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

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.v7.widget.CardView
                android:id="@+id/cardview1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="@dimen/card_margin">

                <LinearLayout
                    style="@style/Widget.CardContent"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content">

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="Info CardView1"
                        android:textAppearance="@style/TextAppearance.AppCompat.Title" />

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="@string/cheese_ipsum" />

                </LinearLayout>

            </android.support.v7.widget.CardView>

            <android.support.v7.widget.CardView
                android:id="@+id/cardview2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/cardview1"
                android:layout_margin="@dimen/card_margin">

                <LinearLayout
                    style="@style/Widget.CardContent"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content">

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="Info CardView2"
                        android:textAppearance="@style/TextAppearance.AppCompat.Title" />

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="@string/cheese_ipsum" />

                </LinearLayout>

            </android.support.v7.widget.CardView>

            <android.support.v7.widget.RecyclerView
                android:id="@+id/recyclerview"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/cardview2"
                android:clipToPadding="false"
                android:paddingTop="0dp"/>

        </RelativeLayout>

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

在活动中:

        RecyclerViewAdapter recyclerViewAdapter = new RecyclerViewAdapter(true); // true: with header
        RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerview);            
        final MyLinearLayoutManager layoutManager = new MyLinearLayoutManager(this, LinearLayoutManager.VERTICAL, false, getScreenHeight(this));
        // final CustomLinearLayoutManager layoutManager = new CustomLinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
        recyclerView.setLayoutManager(layoutManager);
        recyclerView.setAdapter(recyclerViewAdapter);  
        // recyclerView.setNestedScrollingEnabled(false); // Disables scrolling for RecyclerView, however, CustomLinearLayoutManager used instead of MyLinearLayoutManager

我还更新了GitHub的示例项目

 类似资料:
  • 如何在中使用?设置适配器后,内容不可见。 更新布局代码已更新。

  • 当我将RecycerView放入嵌套的scrollview中时,屏幕总是跳到RecycerView的顶部,而不是页面的顶部。这里有一个简单的例子。 在这个示例中,我在Recyview上有一个350dp高的空视图,因为您需要在Recyview上有一些内容才能明显显示出来。Recyview iteself包含100个虚拟文本视图。 启动活动后,滚动位于Recyview的顶部,而不是页面的顶部。这一定是

  • 我在NestedScrollView中有一个RecyclerView。当recyclerView适配器列表较小时,它工作正常。但当列表太大时,它会使我的应用程序崩溃(或造成更多延迟)。我该怎么修呢。代码如下。 XML: 爪哇:

  • 问题内容: 我已经尝试过(但无法正常工作): 问题答案: 尝试这个: 当您遇到此类问题时,一个好主意是检查浏览器是否存在JavaScript错误。不同的浏览器有不同的显示方式,但是需要一个javascript控制台或类似的东西。另外,检查浏览器查看的页面源。 有时,初学者对字符串中的引号感到困惑:在PHP部分中,您分配给。这将字符串值放入该变量内,但该值中没有引号:它们仅用于解释器,因此他知道:

  • 问题内容: 有谁知道如何将Google adsense广告放入GWT网络应用程序中? 问题答案: 您可以将Adsense中的javascript代码放在GWT开头的单个HTML页面中。这样,广告将不会显示在与GTW相同的区域中,而是在GWT代码上方/下方显示。对于广告来说可以。 此示例将横幅放在应用程序上方: 为了向Google WT指示可以信任Google adsense的站点,您需要在-whi