Articles of gridlayoutmanager

如何使用垂直GridLayoutManager水平居中RecyclerView项目

我有一个使用gridlayoutmanager的垂直recyclerview。 我希望每列都居中,但列始于左侧。 在下图中,您可以看到我在说什么。 我用丑陋的配色方案来说明列和背景。 绿色是recyclerview中每个项目的背景,红色是recyclerview本身的背景: View post on imgur.com 我正在设置: mRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); 这是column_item.xml: 这是recyclerview xml:

GridLayoutManager的spanSizeLookup错误

我有一个GridLayoutManger setSpanSizeLookup的问题,当一个活动的方向改变时,我正在改变跨度计数,而检查如果特定的位置是某种types,这完全适用于方向的变化,我唯一的问题是,我正在使用zxing库做条形码扫描,每当一个button被点击我打开zxing默认意图,并从中检索date,但是当zxing打开它去landscape ,我当前的活动方向是portrait这给了我的IllegalArgumentException布局在打开Xzing意图时pipe理抛出,崩溃日志是这样的 java.lang.IllegalArgumentException: Item at position 0 requires 2 spans but GridLayoutManager has only 1 spans. 这个问题不会发生,如果我旋转手机,只发生当我启动的Xzing意图,我真的不知道如何解决这个问题,因为它的窃听我。 这里是我的spanSizeLookup – manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { @Override public int getSpanSize(int position) { return adapter.getHolders().get(position).getLabelHolder() != null ? getResources().getInteger(R.integer.span) : 1; } }); span基于屏幕大小,因此它可以是1-2,2-3和3-4。 我重复一遍,这不会给我任何方向变化的错误,只有当我打开zxing时发生错误 PS如果我打开zxing intent而我的活动是在landspace崩溃不会发生。 编辑 它似乎只是启动zxing默认意图引起这个问题,我有一个activity ,它启动后,它的landscape和exception没有发生,作为一个解决方法,我做了,是我创build了一个activity ,处理barcode扫描延迟1秒发射的intent ,如果我不这样做,它会抛出同样的exception 。 编辑2 我刚刚发现,即使没有setSpanSpizeLookup,崩溃依然会发生。 通过调用manager.setSpanCount(getResources().getInteger(R.integer.span))

GridLayoutManager – 列宽包装自己的最大的孩子

我在HorizontalScrollView里面有一个RecyclerView ,我希望它使用一个GridLayoutManager 。 这是好的,但有一件事仍然困扰着我,每列的宽度是相同的(根据我认为最大的单元格宽度?)。 是否有可能包装的列的宽度匹配此特定列的最大单元格? 它应该看起来像这样: 橙色部分是电池片所采取的部分。 编辑 我们要求我澄清我的期望。 一个例子比单词好,在这里你可以看到一个带有GridLayoutManager的RecyclerView截图。 每个项目都是一个简单的TextView,包含10到40个字符之间的随机文本。 RecyclerView位于前面所述的Horizo​​ntalScrollView内部。 我们可以看到每个列都有相同的宽度,尽pipe这个列中没有项目可以满足整个宽度。 我想要的是去除那些无用的空白空间,并且有不同大小的列,每列都与自己最大的孩子的宽度相匹配。 如果你想testing这种行为,你可以克隆我上传到Github的回购: https : //github.com/ShargotthDev/TestGrid 如问,这是我的XML布局(非常基本): <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <HorizontalScrollView android:id="@+id/gameplay_hotizontalScroll_ScrollView" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="70dp"> <android.support.v7.widget.RecyclerView android:layout_width="wrap_content" android:layout_height="match_parent" android:id="@+id/recycler_view" /> </HorizontalScrollView> </RelativeLayout> 编辑2 我应该提到,一些单元格的span大小可能大于1,LayoutManager应该是垂直的,这样这些单元格会在水平方向而不是垂直方向占据更多的位置(不知道自己是否可以理解)。 谢谢你的时间 !

RecyclerView与GridLayoutManager

装饰RecyclerView具有这种外观和感觉的最好和最简单的方法是什么? 我正在开发一个旅行座位预订应用程序…我知道我可以做与gridlayout经理recyclerview ..但应该是什么步骤我不知道一件事要注意每个巴士有不同的座位安排

使用GridLayoutManager的RecyclerView试图解决wrap_content

我尝试解决以下问题: 使用RecyclerView 与GridLayoutManager 具有固定的细胞宽度 recyclerview仅调整到必要的高度(wrap_content) 我尝试使用下面的代码,问题是它不起作用,我还没有find任何工作示例没有提到方向更改时正确重绘。 public class AutofitRecyclerView extends RecyclerView { private MyGridLayoutManager manager; private int columnWidth = -1; public AutofitRecyclerView(Context context) { super(context); init(context, null); } public AutofitRecyclerView(Context context, AttributeSet attrs) { super(context, attrs); init(context, attrs); } public AutofitRecyclerView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(context, attrs); } private void […]

如何使RecyclerView平滑滚动?

这更像是一个通用的问题,但经过大量的search和尝试,我无法理解为什么这是如此难以实现。 这是我能find的最接近的答案,但仍然无法执行。 具体来说,我使用GridLayoutManager的RecyclerView。 我想要的是网格布局平滑滚动(如默认的gallary应用程序),没有什么奇特的,但网格布局pipe理器的默认实现滚动视图的方式'急躁'。 我试图从上面的链接实现该方法,但没有成功。 我也试图实现LinearSmoothScroller,但我不知道如何实现computeScrollVectorForPosition方法。 Google在computeScrollVectorForPosition上的文档实际上有0个字。 我发现这个3部分的教程 ,但它是没有什么帮助。 所以,我想问的是:是否可以在LinearSmoothScroller中实现某种模板代码,或者通过扩展RecyclerView.SmoothScroller实现平滑滚动? 即使代码依赖于gridlayout中每行的项目和项目的数量,也必须有一些方法可以轻松完成。 我在这里错过了什么?

Android:StaggeredGridLayoutManager在初始化时滚动到顶部

我为我的图片库使用StaggeredGridLayoutManager 。 我已经设置了setReverseLayout(true) ,使图像从底部堆叠。 我面临的问题是,在应用程序的初始化,画廊底部的滚动点。 当用户第一次启动应用程序时,我希望滚动位于图库顶部。 我试过使用scrollToPosition (下面的代码片段),但滚动结束了在画廊的中间某处,可能是因为在调用scrollToPosition时,图像没有正确加载。 mLayoutManager = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL); mLayoutManager.setReverseLayout(true); mRecyclerView.setLayoutManager(mLayoutManager); mImageList = ((MainActivity)getActivity()).getImages(); adapter = new ImageAdapter(getActivity(),mImageList); mRecyclerView.setAdapter(adapter); mRecyclerView.scrollToPosition(mImageList.size()-1); 有没有一种合适的方法将滚动指向顶部,而不是底部?

如何实现水平gridlayoutmanager

如何用recyclerview实现水平gridlayoutmanager。 固定行数。 和水平滚动。 喜欢这个… gridLayoutManager = new GridLayoutManager(getContext(), 1, GridLayoutManager.HORIZONTAL, false); recyclerView.setLayoutManager(gridLayoutManager); recyclerView.setHasFixedSize(true); 我尝试做这个。 但是这并没有显示任何项目。

GridLayoutManager中的不同(dynamic)项目高度

我有一个2列的RecyclerView和GridLayoutManager。 我怎样才能强制LayoutManager根据模板在第一个截图? 现在我已经得到了截图2的结果。 需要的结果: 当前结果:

将偏移量应用于GridLayout项目,并在所有项目中保持相同的大小

我想在网格中的项目之间创build一个空间。 项目应该都有相同的宽度/高度。 我试过了: 创build一个将偏移量应用于所有栅格项的GridLayoutOffsetDecorator : class GridLayoutOffsetDecorator(var offset: Int) : RecyclerView.ItemDecoration() { override fun getItemOffsets( outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State?) { super.getItemOffsets(outRect, view, parent, state) outRect.set(offset, offset, offset, offset) } } 偏移量为8dp会在项目之间创build一个16dp空间。 所以我们仍然需要在外边缘应用8dp的填充: <android.support.v7.widget.RecyclerView android:id="@+id/productList" android:layout_width="match_parent" android:layout_height="match_parent" android:clipToPadding="false" android:padding="8dp" /> 结果是: 问题:物品的尺寸不一样: 当你看到蓝线时,你会发现身高略有差异。 只有在填充回收站视图后才会出现此差异。 这个填充似乎稍微调整了一些项目的大小。 你们有这个问题的经验吗? 任何想法如何解决? 通过从项目中删除图像,高度差异消失。 这是如何设置图像: <SquareImageView android:id="@+id/image" android:layout_width="match_parent" […]