我的布局如下。目前,滚动条位于箭头的布局上方,但我需要将滚动条置于布局的底部,即箭头的布局下方。我尝试在scrollbarStyle
中使用Recyclerview
,但没有成功。关于如何克服这个问题有什么建议吗?
我的布局:
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/itemLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:minHeight="@dimen/size_94dp"
android:visibility="gone"
android:clickable="true"
bind:layout_constraintEnd_toEndOf="@+id/listLayout"
bind:layout_constraintStart_toStartOf="parent"
android:background="@color/white"
bind:layout_constraintTop_toBottomOf="@+id/listLayout"
>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="@dimen/size_0dp"
android:orientation="horizontal"
android:scrollbars="horizontal"
android:scrollbarStyle="outsideInset"
android:fadeScrollbars="false"
bind:layout_constraintStart_toStartOf="parent"
bind:layout_constraintTop_toTopOf="parent"
bind:layout_constraintEnd_toEndOf="parent"
bind:layout_constraintBottom_toTopOf="@+id/arrow_layout"
android:scrollbarThumbHorizontal="@drawable/custom_scrollbar"
bind:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
/>
<FrameLayout
android:id="@+id/arrow_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
bind:layout_constraintBottom_toBottomOf="parent"
bind:layout_constraintStart_toStartOf="parent"
bind:layout_constraintEnd_toEndOf="parent"
>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_chevron_left_black_24dp"
android:adjustViewBounds="true"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_chevron_right_black_24dp"
android:layout_gravity="end"/>
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
答案 0 :(得分:2)
您已经有一个Constraint布局,该布局已被设计用来轻松地重叠项目。在这种情况下,最简单的解决方法是在RV的底部添加填充,然后将箭头约束为与填充区域重叠。
与上面的一些评论相反,该方法没有什么问题-自定义视图(或自定义布局管理器)在您不添加新的预定义行为时会显得过大,并且会花费更多工作。如果您仍然想采用这种方法,则需要一个搜索栏和一个回收站来一起工作,这对我来说听起来像是引入错误的简便方法
编辑:它应该简单到将android:paddingBottom="25dp"
添加到RecyclerView项目布局(传递给ViewHolder的布局)的 root 视图中,然后然后将您的FrameLayout更改为:
<FrameLayout
android:id="@+id/arrow_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
bind:layout_constraintBottom_toBottomOf="@id/recyclerView"
bind:layout_constraintStart_toStartOf="@id/recyclerView"
bind:layout_constraintEnd_toEndOf="@id/recyclerView"
android:marginBottom="16dp">
正如Barotia所述,您始终可以将25dp和16dp更改为所需的任何值,包括百分比