我想将带有空白布局的页脚添加到recyclerView的底部,仅当某些视图在屏幕上可见时才显示(在我的情况下为FabButton)。 FabButton与我的上一个RecyclerView项重叠,因此,如果此FabButton可见,我想在recyclerview的底部添加空白页脚。
页脚适配器内的ViewHolder:
inner class FooterViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
在onBindViewHolder内部:
... ViewHolder above is for items.
else if(holder is FooterViewHolder){
if (parentFragment.isFabButtonVisible()){
holder.itemView.visibility = View.VISIBLE
} else {
holder.itemView.visibility = View.GONE
}
}
这部分代码正在工作(也可以正确执行分支),但是我的页脚视图在屏幕上始终可见。即使我仅添加View.GONE
,它仍然可见。
父活动的XML:
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="@color/splash_white"
android:layout_weight="1"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
>
<com.app.TabLayoutEntity.CustomViewPager
android:id="@+id/fragmentViewPager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="0dp"
android:background="@color/splash_white"
tools:layout_editor_absoluteY="-2dp" />
<ImageButton
android:id="@+id/fabButton"
android:layout_width="56dp"
android:layout_height="56dp"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
android:background="@drawable/fab_gradient"
android:clickable="true"
android:scaleType="fitCenter"
android:adjustViewBounds="true"
android:padding="8dp"
android:elevation="8dp"
android:shape="oval"
android:src="@drawable/ico_fab" />
</android.support.design.widget.CoordinatorLayout>
片段XML(在ViewPager内部):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:clipToPadding="true"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/itemRecyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/recyclerview_corners"
android:clipToPadding="false"
android:scrollbars="vertical"
android:paddingBottom="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</LinearLayout>
答案 0 :(得分:3)
如果您只是想避免最后一个项目和Fab重叠,那么您应该在recyclerview
和父级布局xml的简单更改下面进行此操作
<android.support.v7.widget.RecyclerView
android:clipToPadding="false"
android:paddingBottom="paddingindp"/>// for example You can add 100dp and test
并在父版式上将此内容添加到以下行
android:clipToPadding="true"
这将使您的recyclerview
在该Fab上滚动,并且不需要添加页脚视图
希望这项工作能满足您的要求。
答案 1 :(得分:1)
您可以使用getItemCount()
方法添加条件,因为如果添加页脚,则需要增加列表大小
就像
override fun getItemCount(): Int {
if (parentFragment.isFabButtonVisible()){
return mModels.size + 1
} else {
return mModels.size
}
}