gavin-zyx / stickydecoration Goto Github PK
View Code? Open in Web Editor NEWLicense: Apache License 2.0
License: Apache License 2.0
急急急!!!稍微复杂的布局卡顿明显,复用View无法改变内容,求速度处理!!!同样缺少父容器导致测量问题!!
你好,我在使用这个框架的时候,使用了自定义的分组头部文件,使用Glide加载图片的时候发现无法显示,无论是加载本地图片还是网络图片都不能,我也花了一段时间去寻找原因,在Glide的监听回调里图片应该是加载完成了的,同时在Glide项目中的其他地方加载图片是没有问题的,作者如果有时间的话,可以帮我解答一下吗
setStrongReference方法怎么没了,没这个方法数据会有问题
.setGroupTextColor(Color.BLACK) 无效
更改方案:
public StickyDecoration.Builder setGroupTextColor(@ColorInt int color) {
mStickyDecoration.mGroupTextColor = color;
mStickyDecoration.mTextPaint.setColor(color); //添加代码部分
return this;
}
第一种报错:
java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
at android.graphics.Canvas.drawText(Canvas.java:1667)
at com.xiaobu121.xiaobu.xiaobu_android.widgets.stickyDecoration.StickyDecoration.drawDecoration(StickyDecoration.java:100)
at com.xiaobu121.xiaobu.xiaobu_android.widgets.stickyDecoration.StickyDecoration.onDrawOver(StickyDecoration.java:67)
第二种报错:
UncaughtException detected: java.lang.ArrayIndexOutOfBoundsException: length=10; index=-1
at java.util.ArrayList.get(ArrayList.java:413)
at com.xiaobu121.xiaobu.xiaobu_android.ui.fragment.UserStepFragment$1.getGroupName(UserStepFragment.java:121)
当我用RecyclePagerAdapter 加载多个页面的布局。滑动好多页,每个页面展示每个班的班级名称和班级的,然后在各个班级中分不同的成绩档(90以上)(80~90).. 这个是我的这组。页面的加载会刷新数据,PowerfulStickyDecoration 的分组,组会被复用多出一条。比如在(90以上)上面多一条透明的和(90以上)分组一样高度的拦。单个页面不会有这个问题,我查是复用的问题。
大神哥,这个我再做分页加载,然后刷新,抬头就会闪烁一下(看上去就像是分页加载刷新后被顶没了,然后又绘制了):
这是我分页加载的刷新:
mList.addAll(infoFlash);
adapter.notifyDataSetChanged();
实现分组的同时,如何再添加分割线?
//根据position获取View
View groupView = getGroupView(position);
if (groupView == null) return;
ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, mGroupHeight);
groupView.setLayoutParams(layoutParams);
groupView.setDrawingCacheEnabled(true);
groupView.measure(
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
//指定高度、宽度的groupView
groupView.layout(0, 0, right, mGroupHeight);
groupView.buildDrawingCache();
Bitmap bitmap = groupView.getDrawingCache();
int marginLeft = isAlignLeft ? 0 : right - groupView.getMeasuredWidth();
c.drawBitmap(bitmap, left + marginLeft, top - mGroupHeight, null);
使用自定义头的情况下,重写getGroupView 在里面
View view = getLayoutInflater().inflate(R.layout.data_decoration_layout, null, false);
在oppo R15 机型上卡顿明显,其它手机没有卡顿现象,怎么解决?急求
外层加一个ScrollView,sticky就失效了
当最不同组的悬浮头View滑动到顶部,顶出悬浮头以后,没有监听
猜测卡顿原因是在查找first位置这个函数。
关于view的缓存,可以直接用hashmap,进行缓存并且直接get,当数据量大是,可以清除过期hashmap上的view。
.setDivideColor() //分割线颜色
.setDivideHeight() //分割线高度
使用这两个方法并不能让没一格设置分割线
将StickyDecoration中onDrawOver方法中的final int left = parent.getLeft() + parent.getPaddingLeft();
改成final int left = parent.getPaddingLeft(); 按照你的来做,当RecyclerView的宽度小于屏幕宽度时,悬浮栏的左边起点位置就会加上这个parent.getLeft(),导致悬浮栏的宽度小于item的宽度
悬浮view点击事件会穿透到下层item的点击事件,导致悬浮点击事件无效
StickyDecoration中设置文字颜色后没有重新设置Paint的颜色,设置后的颜色没得到应用,颜色始终为白色。
走return null 后crash ,把null换成"",就会多出一条悬浮item
老铁点击省收缩市,有思路没有!
无法像ExpandableListView那样,折叠分组,这是一个遗憾,但我依然给你一个star
请问 在gridlayoutmanager 情况下可以使用吗?
只会在大约左边300px的区域绘制,而且使用权重完全失效
at com.gavin.com.library.PowerfulStickyDecoration.getGroupName(PowerfulStickyDecoration.java:170)
at com.gavin.com.library.BaseDecoration.isFirstInGroup(BaseDecoration.java:105)
at com.gavin.com.library.BaseDecoration.getFirstInGroup(BaseDecoration.java:194)
at com.gavin.com.library.BaseDecoration.getFirstInGroup(BaseDecoration.java:197)
at com.gavin.com.library.BaseDecoration.getFirstInGroup(BaseDecoration.java:197)
at com.gavin.com.library.BaseDecoration.getFirstInGroup(BaseDecoration.java:197)
at com.gavin.com.library.BaseDecoration.getFirstInGroup(BaseDecoration.java:197)
at com.gavin.com.library.BaseDecoration.getFirstInGroup(BaseDecoration.java:197)
at com.gavin.com.library.BaseDecoration.getFirstInGroup(BaseDecoration.java:197)
at com.gavin.com.library.BaseDecoration.getFirstInGroup(BaseDecoration.java:197)
at com.gavin.com.library.BaseDecoration.getFirstInGroup(BaseDecoration.java:197)
at com.gavin.com.library.BaseDecoration.getFirstInGroup(BaseDecoration.java:197)
at com.gavin.com.library.BaseDecoration.getFirstInGroup(BaseDecoration.java:197)
at com.gavin.com.library.BaseDecoration.getFirstInGroup(BaseDecoration.java:197)
at com.gavin.com.library.BaseDecoration.getFirstInGroup(BaseDecoration.java:197)
at com.gavin.com.library.BaseDecoration.getFirstInGroup(BaseDecoration.java:197)
at com.gavin.com.library.BaseDecoration.getFirstInGroup(BaseDecoration.java:197)
at com.gavin.com.library.BaseDecoration.getFirstInGroup(BaseDecoration.java:197)
at com.gavin.com.library.BaseDecoration.getFirstInGroup(BaseDecoration.java:197)
at com.gavin.com.library.BaseDecoration.getFirstInGroup(BaseDecoration.java:197)
at com.gavin.com.library.BaseDecoration.getFirstInGroup(BaseDecoration.java:197)
at com.gavin.com.library.BaseDecoration.getFirstInGroup(BaseDecoration.java:197)
at com.gavin.com.library.BaseDecoration.getFirstInGroup(BaseDecoration.java:197)
at com.gavin.com.library.BaseDecoration.getFirstInGroup(BaseDecoration.java:197)
NestedScrollView嵌套以后 setNestedScrollingEnabled = false 以后 就没什么作用了
GroupListener groupListener = new GroupListener() {
@OverRide
public String getGroupName(int position) {
if (position == 0 || position == 3 || position == 4){
return "";
}
return null;
}
};
StickyDecoration decoration = StickyDecoration.Builder
.init(groupListener)
.setGroupBackground(Color.parseColor("#F1F0F1"))
.setGroupHeight(ConvertUtils.dp2px(10))
.build();
position == 3 || position == 4 之间的灰色背景并没有出现 , 只有当相邻分组的item条数只有一条的时候才会有这种情况 ,相邻的分组只要其中一组分组的item条数大于一条就不会有这种情况发生 不知道是不是判断的问题
加载网络图片 不显示!!!急急急!!!
急急急急!刷新后数据变动,但是 decoration 依然是第一次的视图数据,无法对应刷新后的数据!!!老板 急需这功能!
当Decoration的高度大于Item高度时,在上滑时两个groupView会有重叠部分,重叠部分的高度等于Decoration和Item的高度差,具体代码如下:
if (position + 1 < itemCount) {
//获取下个GroupName
String nextGroupName = getGroupName(position + 1);
//下一组的第一个View接近头部
if (!currentGroupName.equals(nextGroupName) && viewBottom < top) {
top = viewBottom;
}
}
如果RecyclerView上面有SmartRefreshLayout用于刷新,则会导致,我下拉刷新后,那个悬浮栏就往下移动一定的距离,同时悬浮栏和顶部有一定距离的白底,再次下拉刷新后,悬浮栏在之前的基础上继续往下移动,白底继续增大,可有解决思路呢?
后面来的悬浮item 会盖在顶部悬浮item的上面 并没有将其推到屏幕外 这个怎么解决
实现了自定义view的悬浮,但是自定义view能加上点击事件么?
这个库用recycleView来写城市选择列表很好,可以加上一个自定义的SlideBar就更完美了。不过更多的应用场景是,recycleView复杂布局时,只想让某一条View悬浮,并且需要获取该View内的子View的点击事件,您看看能不能在此基础上回调出悬浮条子View的点击事件!
Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
我这里用的公司的测试机
在未使用这个decoration前一切安好,使用后出现明显掉帧的情况
如题,一直building
有多个悬停Title,列表向上滑动,会出现无上推效果,而是直接覆盖替换。有时候第一个有上推的效果,后面都没有,有时候是最后一个有上推效果前面的都没有
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.