【问题标题】:Recycleview under NestedScrollview in androidandroid中NestedScrollview下的Recycleview
【发布时间】:2016-11-22 17:33:27
【问题描述】:

我将RecyclerView 放在NestedScrollView 下。如果RecyclerView 数据很小,那么它工作正常,但如果数据超过10,000,Android OS 默认弹出来询问waitclose 应用程序。如果我删除我的NestedRecyclerView,那么它工作正常。我的问题是将布局放入ScrollView

的更好方法是什么

这是我的布局

    <LinearLayout
    android:id="@+id/totstock_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:visibility="visible">

    <android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:scrollbars="vertical"
        android:nestedScrollingEnabled="true"
        android:layout_height="wrap_content">

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


            <LinearLayout
                android:id="@+id/totstockrelativeLayout1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">


                <TextView
                    android:id="@+id/totstockSelectBox"
                    android:layout_width="0dp"
                    android:layout_height="40dp"
                    android:layout_alignParentLeft="true"
                    android:layout_centerVertical="true"
                    android:layout_gravity="center"
                    android:layout_marginLeft="10dp"
                    android:layout_weight="1"
                    android:gravity="start|center"
                    android:maxLines="1"
                    android:minLines="1"
                    android:minWidth="100dp"
                    android:padding="5dp"
                    android:text="Warehouse"
                    android:textSize="14sp"
                    android:textStyle="bold" />


                <AutoCompleteTextView
                    android:id="@+id/totstockwarehouse"
                    android:layout_width="0dp"
                    android:layout_height="40dp"
                    android:layout_alignParentRight="true"
                    android:layout_centerVertical="true"
                    android:layout_marginLeft="8dp"
                    android:layout_marginRight="8dp"
                    android:layout_marginTop="5dp"
                    android:layout_weight="3"
                    android:background="@drawable/round_text"
                    android:gravity="center|left"
                    android:paddingLeft="8dp"
                    android:paddingRight="8dp"
                    android:textColor="@color/primaryText"
                    android:textSize="16sp" />

            </LinearLayout>

            <LinearLayout
                android:id="@+id/totstockrelativeLayout2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">


                <TextView
                    android:id="@+id/totstockSelectBox1"
                    android:layout_width="0dp"
                    android:layout_height="40dp"
                    android:layout_alignParentLeft="true"
                    android:layout_centerVertical="true"
                    android:layout_gravity="center"
                    android:layout_marginLeft="10dp"
                    android:layout_weight="1"
                    android:gravity="start|center"
                    android:maxLines="1"
                    android:minLines="1"
                    android:minWidth="100dp"
                    android:padding="5dp"
                    android:text="Customer"
                    android:textSize="14sp"
                    android:textStyle="bold" />


                <AutoCompleteTextView
                    android:id="@+id/totstockcustomer"
                    android:layout_width="0dp"
                    android:layout_height="40dp"
                    android:layout_alignParentRight="true"
                    android:layout_centerVertical="true"
                    android:layout_marginLeft="8dp"
                    android:layout_marginRight="8dp"
                    android:layout_marginTop="5dp"
                    android:layout_weight="3"
                    android:background="@drawable/round_text"
                    android:gravity="center|left"
                    android:paddingLeft="8dp"
                    android:paddingRight="8dp"
                    android:textColor="@color/primaryText"
                    android:textSize="16sp" />

            </LinearLayout>

            <LinearLayout
                android:id="@+id/totrelativeLayout3"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">


                <TextView
                    android:id="@+id/totSelectBox2"
                    android:layout_width="0dp"
                    android:layout_height="40dp"
                    android:layout_alignParentLeft="true"
                    android:layout_centerVertical="true"
                    android:layout_gravity="center"
                    android:layout_marginLeft="10dp"
                    android:layout_weight="1"
                    android:gravity="start|center"
                    android:maxLines="1"
                    android:minLines="1"
                    android:minWidth="100dp"
                    android:padding="5dp"
                    android:text="Item Name"
                    android:textSize="14sp"
                    android:textStyle="bold" />


                <AutoCompleteTextView
                    android:id="@+id/totitemautotext"
                    android:layout_width="0dp"
                    android:layout_height="40dp"
                    android:layout_alignParentRight="true"
                    android:layout_centerVertical="true"
                    android:layout_marginLeft="8dp"
                    android:layout_marginRight="8dp"
                    android:layout_marginTop="5dp"
                    android:layout_weight="3"
                    android:background="@drawable/round_text"
                    android:gravity="center|left"
                    android:paddingLeft="8dp"
                    android:paddingRight="8dp"
                    android:textColor="@color/primaryText"
                    android:textSize="16sp" />

            </LinearLayout>

            <android.support.v7.widget.AppCompatButton
                android:id="@+id/totstocksearch_wms"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="5dp"
                android:background="@color/mdtp_light_gray"
                android:padding="4dp"
                android:text="Search"
                android:textColor="@color/white"
                android:textSize="16sp" />

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



    <HorizontalScrollView
        android:id="@+id/datahorizontal2tot"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scrollbars="none">

        <LinearLayout
            android:id="@+id/datahorizontal1tot"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <LinearLayout
                android:id="@+id/datahorizontaltot"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal">


                <TextView
                    android:id="@+id/totstockitemsku"
                    android:layout_width="150dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:gravity="center"
                    android:text="Item SKU"
                    android:textColor="@color/black"
                    android:textSize="15sp" />

                <TextView
                    android:id="@+id/totstockstockitemname"
                    android:layout_width="150dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:gravity="center"
                    android:text="Item Name"
                    android:textColor="@color/black"
                    android:textSize="15sp" />

                <TextView
                    android:id="@+id/totstockbrandname"
                    android:layout_width="100dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:gravity="center"
                    android:text="Brand Name"
                    android:textColor="@color/black"
                    android:textSize="15sp" />

                <TextView
                    android:id="@+id/totstockgrdname"
                    android:layout_width="100dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:gravity="center"
                    android:text="Grade Name"
                    android:textColor="@color/black"
                    android:textSize="15sp" />

                <TextView
                    android:id="@+id/totstockgrnqty"
                    android:layout_width="110dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:gravity="center"
                    android:text="GRN Quantity"
                    android:textColor="@color/black"
                    android:textSize="15sp"
                    android:visibility="visible" />

                <TextView
                    android:id="@+id/totstockpickqty"
                    android:layout_width="140dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:gravity="center"
                    android:text="Pick List Quantity"
                    android:textColor="@color/black"
                    android:textSize="15sp" />

                <TextView
                    android:id="@+id/totstockavailqty"
                    android:layout_width="150dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:gravity="center"
                    android:text="Available Quantity"
                    android:textColor="@color/black"
                    android:textSize="15sp" />

                <TextView
                    android:id="@+id/totstockputawayqty"
                    android:layout_width="140dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:gravity="center"
                    android:text="Put Away Quantity"
                    android:textColor="@color/black"
                    android:textSize="15sp" />

                <TextView
                    android:id="@+id/totstockorderqty"
                    android:layout_width="140dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:gravity="center"
                    android:text="Order Quantity"
                    android:textColor="@color/black"
                    android:textSize="15sp" />

                <TextView
                    android:id="@+id/totstockdamage"
                    android:layout_width="140dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:gravity="center"
                    android:text="Damage"
                    android:textColor="@color/black"
                    android:textSize="15sp" />

                <TextView
                    android:id="@+id/totstockdispatchhqty"
                    android:layout_width="140dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:gravity="center"
                    android:text="Dispatch Quantity"
                    android:textColor="@color/black"
                    android:textSize="15sp" />

            </LinearLayout>

            <View
                android:id="@+id/viewline1"
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:background="@android:color/darker_gray" />


            <android.support.v7.widget.RecyclerView
                android:id="@+id/totstockwmsrecyclerview"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:visibility="gone"
                app:layout_behavior="@string/appbar_scrolling_view_behavior">

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

        </LinearLayout>
    </HorizontalScrollView>

    <TextView
        android:id="@+id/totstocknorecord"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center"
        android:text="No Record Found"
        android:textColor="@android:color/black"
        android:textSize="24sp"
        android:visibility="visible" />

</LinearLayout>

【问题讨论】:

  • 我不认为RecyclerViewNestedScrollView 本身就是问题所在。您的视图层次结构很大。尝试删除所有这些 TextViews 和 AutoCompleteTextView - 基本上除了 NestedScrollViewRecyclerView 之外的所有内容,看看它是否仍然会导致大型数据集出现问题。我认为您遇到的是可以在屏幕上绘制的视图数量的限制。我不记得最大数量,但我认为您的视图层次结构非常庞大,已经接近这个限制。
  • 是这样吗?布局有什么限制吗?
  • 但是当我删除我的scrollview 它工作正常
  • 理论上,每个布局的限制是 80 个视图 - 请参阅:stackoverflow.com/questions/34153362/… 如果您删除 ScrollView(是 NestedScrollView 还是 HorizontalScrollView?)那么这就是我首先要检查的内容。
  • 如果我删除了我的NestedScrollView,那么一切正常。

标签: android android-layout android-recyclerview scrollview


【解决方案1】:

你不应该使用滚动视图作为父子视图

相反,您应该使用具有多行的 recyclerview,如下所示:

http://arjunu.com/2015/10/android-recyclerview-with-different-cardviews/

【讨论】:

  • 如果你需要,你应该这样做。
  • 不行,他可以把其他的view放到recyclerview的一个item里
  • 这是我的问题。怎么样?
  • 不,这对我不可用。实际上我需要滚动我的屏幕verticall 以及horizontal
  • 我没有在您的视图中看到任何水平滚动视图,但是您可以这样做,只需在您希望水平放置的视图中将它们放在带有水平布局管理器的回收视图中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-14
  • 2016-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多