这个方法主要是需要在Adapter中进行处理,首先我们需要知道recycerview的宽度。然后均分成三分。
private int cacheSpare = 300; //只是为了处理初始值
int gridWidth = mRecyclerviewWidth / 3;
int width = DisplayUtil.measureText(itemBinding.tvLab.getPaint(), parameter.mLabel);
int spare = gridWidth - width; //剩余空间
if (cacheSpare > spare) { //使用剩余空间最小的
cacheSpare = spare;
if (position % 3 == 2) {
itemBinding.viewDataLayout.setPadding(cacheSpare, 0, 0, 0);
} else if (position % 3 == 1) {
itemBinding.viewDataLayout.setPadding(cacheSpare / 2, 0, 0, 0);
StartLinearSnapHelper
一个可以让线性RecyclerView的Item居左或者居右吸附对齐的SnapHelper类,集成自 LinearSnapHelper,修改了对齐规则为靠左或者靠右
implementation 'com.xm.widget:StartLinearSnapHelper:<latest version>'
Kotlin
recyclerView.layoutManager = LinearLayoutManager(this, R
学习导航RecyclerView分割线靠左解决办法上一篇博客中写的demo不管我布局怎么设置,运行后获得的结果总是靠左,如下图在看下我的item布局,如下图这个是什么原因造成的呢?我的理解是我在写适配器的时候造成的,如下图是如下面所示,我是通过parent.getContext….获取的好像只有我定义的一个textview和imagerView,而我外面套的LinearLayout中设置的match
Recyclerview滑动对齐方式
遇到一个问题,就是常见的双击让Recyclerview跳到知道position,但是跳转却是到对应position的底部,而不是上面对齐。
方法:smoothScrollToPosition(position)
Recyclerview空实现smoothScrollToPosition,最后由对应的LayoutManager实现,这里是LinearLayoutManager
@Override
public void smoothScrollToPosi
App中,用到最多的设计就是列表形式的布局,而RecyclerView的出现,也完完全全的替代了之前的Listview、GridView,成为android控件中,用途最为广泛的widget之一,今天就来简单介绍一下,RecyclerView的一些布局方法。
我们经常在设计稿中看到各式各样的列表,最通常的需求,就是对各个item进行排列,这就运用到了对分割线的处理。在...
在实际开发中我们会用RecyclerView做列表,在滑动的时候我们希望我们滚动停止的时候,可见是一个完整的item,这样达到更好的体验效果。RecyclerView+SnapHelper 就能实现我们的效果SnapHelper SnapHelper 的实现原理是监听RecyclerView.OnFlingListener中的onFling接口。LinearSnapHelper是抽象类Sna
新增了SnapHelper辅助类,可以实现在滚动结束时item的对齐方式,时间方式如下:
new LinearSnapHelper().attachToRecyclerView(mRecyclerView);
new PagerSnapHelper().attachToRecyclerView(mRecyclerView);
两种SnapHelper,功能类似,PagerSnapHel...
Android FlexboxLayout流式布局FlexBoxLayout是为Android带来了与 CSS Flexible Box Layout(CSS 弹性盒子)相似功能的库。一:添加依赖如果迁移的AndroidX中dependencies {implementation 'com.google.android:flexbox:2.0.1'}否则:dependencies {impleme...
这是要做的效果图
同样需要RecyclerView,所以说这玩意好强大。
由图看出,需要两个layout分别左对齐右对齐,还需要个LinearLayoutManager就可以简单实现,。
步骤嘛如下:
1.首先,两个布局分别和两边对齐,这个看个人喜好了,想弄多难看就弄多难看,反正现在没人看;
2.别忘了导个RecyclerVIew包,没她你嘛事都做不了,在主布局放入这个RecyclerV
但是我们直接设置的时候,他的子项会在给他的布局的左边,于是我想到了设置下子项的左右边距,但是android手机屏幕太多种类型了,所以在部分手机上,也不大行。列表分为一列两个,两个子项宽度一致,且左右边距一样,就是要好看,子项宽度适配手机,高度适配宽度。之前是设置decoration,发现不太行,还是得适配手机宽度才行。上面我减去了40dp,就是为了美观点,不然两个子项直接怼一起了,很丑哦~~既然要匹配手机屏幕宽度,那就让手机宽度来决定子项宽度。当然,如果每个子项的宽会随内容改变,建议使用流布局哈。
今天项目中要实现这样的一个列表效果,因为是列表,那么当然要使用 RecyclerView ,可以轻松实现 GridLayout 的列表效果,但是有一个问题就是 RecyclerView 的 Item 样式不好写,因为 UI 上是要求所有的 Item 靠边显示,中间留出一点空白。一开始并没有什么思路,很是头疼了一阵,最后多方查找搜索,终于找到了解决方法。办法就是给 RecyclerView 设置Ite
因为recyclerView的scrillToPosition(int position)只能移动到界面显示的位置,所以当滑到界面显示的位置时,还要手动再划一点位置
1.要滑动的位置在屏幕的上方直接滑动到该位置,即显示在屏幕顶部
2.要滑动的位置在屏幕的中间,向上滑动一段距离
3.要滑动的位置在屏幕的下方,首先滑动到可见位置,再调用2的滑动方式
package com.dejun.comm...
fun dwToPostion(position: Int) {
val smoothScroller: RecyclerView.SmoothScroller = CenterSmoothScroller(activity)
smoothScroller.targetPosition = position
linearLayoutManager?.startSmoothScroll(smoothScroller)
class CenterSmoothS.