1. RecyclerView
- recyclerview notifyChange 没有效果,只有滑动一下才能显示,参考链接:CymChad
大致意思是使用了 Rx 的话确保是 observerOn 而不是 subscribeOn;并且最好不要贸然使用 Android 控件的 alpha 和 beta 版本。 - requiresFadingEdge没有效果,原因是我设置了overScrollMode为 never
- RecyclerView.canScrollVertically(1)的值表示是否能向上滚动,false表示已经滚动到底部
- RecyclerView.canScrollVertically(-1)的值表示是否能向下滚动,false表示已经滚动到顶部
byw_dongua - computeVerticalScrollExtent()是当前屏幕显示的区域高度
- computeVerticalScrollOffset() 是当前屏幕之前滑过的距离
- computeVerticalScrollRange()是整个RecycleView控件的高度
- recyclerView.getLastVisiblePosition()获取当前可见的最后一个item的position
2. AppbarLayout
- 定义:
一个 orientation为 Vertical 的LinearLayout。 - 特性:
子 View 添加 scroll_flags可指定页面中view滑动时子 view 的相应动作。 - 取值:
下:下拉,上:上拉,出:出现,隐:隐藏,顶:下拉到顶部-
- scroll,子view 作为页面中滑动组件的一部分参与动作。(下到顶出,上隐)
-
- enterAlways,和 1 一起设置。(下出,上隐)
-
- enterAlwaysCollapsed,和 1、2 一起设置。(下出,顶最大,上隐)
-
- exitUntilCollapsed,和 1 一起设置,需设置 minHeight。(下到最大,上到最小)
-
- 运行默认有阴影,并且设置 elevation 和 translationZ 没有效果
参考链接:月影涛声
AppBarLayout的style定义在Widget.Design.AppBarLayout
再进一步可以找到elevation的高度是design_appbar_elevatio
因此只要在自己项目的dimens中重写这个值即可
<resources xmlns:tools="http://schemas.android.com/tools">
<dimen name="design_appbar_elevation" tools:override="true">0dp</dimen>
</resources>
3. 自定义 view
一开始因为定义太多,搞不清楚,妈的
大致流程是这样的:
- 按功能决定要不要自己写布局
- 有布局:在初始化的时候 LayoutInflater这个 xml 文件进来,之后就可以像正常操作Activity 一样操作这个 xml 文件 里的对象了。
- 没有布局文件:那直接下一步。
- 写一个自己的类继承自布局类
有布局的话 继承自布局的最外层 view/ViewGroup
没布局的话 继承你想继承的 Android 提供的 view/viewGroup