我应该使用 ScrollView 还是 RecyclerView 在片段中滚动?
Posted
技术标签:
【中文标题】我应该使用 ScrollView 还是 RecyclerView 在片段中滚动?【英文标题】:Should I use ScrollView or RecyclerView for scrolling in fragment? 【发布时间】:2021-06-10 15:27:51 【问题描述】:我对我的 android 应用有疑问。我有一个片段,我想在其中滚动。我应该在片段中还是在主活动中使用 ScrollView(片段用于在工具栏中导航)?
另外,我应该使用 ScrollView 还是 RecyclerView?这是我到目前为止尝试过的,但没有奏效。 这是主要的活动 xml,我在其中添加了 ScrollView。
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
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_
android:layout_
android:fillViewport="true"
android:isScrollContainer="false">
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_
android:layout_
tools:context=".MainActivity">
<FrameLayout
android:id="@+id/fragment_container"
android:layout_
android:layout_
android:layout_above="@id/bottomAppBar" />
<com.google.android.material.bottomappbar.BottomAppBar
android:id="@+id/bottomAppBar"
android:layout_
android:layout_
android:layout_gravity="bottom"
android:backgroundTint="@color/green_700"
app:fabAlignmentMode="center"
app:fabCradleMargin="10dp"
app:fabCradleRoundedCornerRadius="30dp"
app:fabCradleVerticalOffset="10dp"
app:contentInsetStart="0dp">
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottomNavigationView"
android:layout_
android:layout_
app:itemIconTint="@color/light_grey"
app:itemTextColor="@color/light_grey"
app:itemTextAppearanceActive="@font/josefin_sans_semibold"
android:background="@drawable/background_transparent"
app:menu="@menu/bottom_navigation_menu" />
</com.google.android.material.bottomappbar.BottomAppBar>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
android:layout_
android:layout_
android:onClick="onPressFab"
android:src="@drawable/ic_add"
app:layout_anchor="@id/bottomAppBar" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</ScrollView>
这是我需要滚动的片段。它是工具栏的主页片段。
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
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_
android:layout_
android:fillViewport="true"
android:isScrollContainer="false">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_
android:layout_>
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:id="@+id/myCoordinatorLayout"
android:layout_
android:layout_
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
app:layout_constraintTop_toTopOf="parent">
</androidx.coordinatorlayout.widget.CoordinatorLayout>
<com.google.android.material.card.MaterialCardView
android:id="@+id/cardView"
android:layout_
android:layout_
app:cardBackgroundColor="@color/green_700"
app:cardElevation="40dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.428"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.MaterialCardView.Cut">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/relative"
android:layout_
android:layout_>
<EditText
android:id="@+id/search_bar"
android:layout_
android:layout_
android:layout_marginStart="20dp"
android:layout_marginLeft="20dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="30dp"
android:layout_marginRight="30dp"
android:background="@drawable/search_outline"
android:fontFamily="@font/josefin_sans_semibold"
android:hint="Search Barcode"
android:inputType="text"
android:maxLines="1"
android:paddingLeft="30dp"
android:paddingTop="10dp"
android:paddingRight="30dp"
android:paddingBottom="10dp"
android:textColor="@color/dark_grey"
android:textColorHint="@color/grey_200"
android:textSize="18sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.183"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/sbutton"
android:layout_
android:layout_
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_marginTop="16dp"
android:background="@drawable/background_transparent"
android:drawableLeft="@drawable/search_button"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>
<ImageView
android:id="@+id/imageView4"
android:layout_
android:layout_
android:layout_marginTop="16dp"
android:layout_marginEnd="64dp"
android:layout_marginRight="64dp"
android:src="@drawable/home_image"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView3"
android:layout_
android:layout_
android:layout_marginTop="120dp"
android:layout_marginEnd="4dp"
android:layout_marginRight="4dp"
android:gravity="center"
android:text="Welcome back!"
android:textColor="@color/darker_grey"
android:textSize="40sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/myCoordinatorLayout" />
<androidx.viewpager.widget.ViewPager
android:id="@+id/viewPager"
android:layout_
android:layout_
android:layout_marginTop="340dp"
android:clipToPadding="false"
android:foregroundGravity="center"
android:overScrollMode="never"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.16"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/myCoordinatorLayout">
</androidx.viewpager.widget.ViewPager>
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>
如果您有任何建议,我将不胜感激。谢谢!
【问题讨论】:
什么?用于滚动的recyclerview?你的滚动视图不滚动或滚动不正确吗? 它根本不滚动 您有什么建议吗? 实际上我无法评估这个问题,但可以理解的是,您应该在片段中使用滚动视图,而不是在活动中。 尝试使用 android.support.v4.widget.NestedScrollView 作为片段的根并删除 ScrollView。 【参考方案1】:RecyclerView 用于制作列表。
尝试将您的片段代码放入 ScrollView 并将其从您的活动中删除。
【讨论】:
以上是关于我应该使用 ScrollView 还是 RecyclerView 在片段中滚动?的主要内容,如果未能解决你的问题,请参考以下文章
属性 'scrollView' 需要定义方法 '-scrollView' - 使用 @synthesize、@dynamic 还是提供方法实现?