Android解决CoordinatorLayout折叠布局RecyclerView最后一条数据显示不全问题
16lz
2021-01-25
今天使用CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout+RecyclerView实现折叠布局出现RecyclerView最后一条数据显示不全问题,问题如下图:
找了很多方法最后发现是app:layout_behavior="@string/appbar_scrolling_view_behavior"
的问题,是因为在顶部toolbar未折叠情况下,下方RecyclerView或者其他布局无法显示到最后一项。如果想要在未折叠情况下显示到最后一项,需要使用自定义的behavior,代码如下:
public class FixScrollingBehavior extends AppBarLayout.ScrollingViewBehavior { private AppBarLayout appBarLayout; public FixScrollingBehavior() { super(); } public FixScrollingBehavior(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean onDependentViewChanged(CoordinatorLayout parent, View child, View dependency) { if (appBarLayout == null) { appBarLayout = (AppBarLayout) dependency; } final boolean result = super.onDependentViewChanged(parent, child, dependency); final int bottomPadding = calculateBottomPadding(appBarLayout); final boolean paddingChanged = bottomPadding != child.getPaddingBottom(); if (paddingChanged) { child.setPadding( child.getPaddingLeft(), child.getPaddingTop(), child.getPaddingRight(), bottomPadding); child.requestLayout(); } return paddingChanged || result; } private int calculateBottomPadding(AppBarLayout dependency) { final int totalScrollRange = dependency.getTotalScrollRange(); return totalScrollRange + dependency.getTop(); }}
xml中替换app:layout_behavior="@string/appbar_scrolling_view_behavior"
属性为如下:
app:layout_behavior="com.xx.xx.ui.widget.FixScrollingBehavior"
就能解决最后一条显示不全问题,解决后如图:
参考文章:https://www.jianshu.com/p/bc56afbd88f2
希望能解决你的问题^ - ^
更多相关文章
- 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
- 强烈推荐:Android完全自学从零开始
- Android-显示传感器的值
- android界面设计(一)侧边栏的两种实现方式
- IDEA 快捷键 Android(安卓)Studio快捷键
- TextView设置中文粗体
- 全局参数
- Android_UI_全屏去掉标题栏和状态栏的两种方法
- Android(安卓)自带的系统分享功能