如何集中一个回收站的项目?

我需要把每一行中的元素居中,这样他们就会像这个模型一样。 我一直在寻找是否有任何布局,这样的方式没有看。 项目在其行中居中。

小样

这是它现在在我的代码中的样子。 在这里输入图像说明

Solutions Collecting From Web of "如何集中一个回收站的项目?"

在您的RecyclerView的项目行布局中取LinearLayout ,然后将android:layout_gravity="center"改为LinearLayout

对于每一行图像,你必须采取不同的LinearLayout

以下是示例代码:

  <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:orientation="horizontal"> <ImageView android:id="@+id/image1" android:layout_width="64dp" android:layout_height="64dp" android:layout_marginRight="10dp" android:layout_weight="1" android:src="@drawable/image1" /> <ImageView android:id="@+id/image2" android:layout_width="64dp" android:layout_height="64dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_weight="1" android:src="@drawable/image2" /> <ImageView android:id="@+id/image3" android:layout_width="64dp" android:layout_height="64dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_weight="1" android:src="@drawable/image3" /> </LinearLayout> 

我已经这样做了:使recyclerview宽度wrap_content和android:layout_gravity =“center_horizo​​ntal”。

  <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <android.support.v7.widget.RecyclerView android:id="@+id/recycler_photos" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:paddingLeft="@dimen/dp30" android:paddingRight="@dimen/dp30" /> </LinearLayout> 

我假设你正在使用带有RecyclerViewLinearLayoutManager作为ListView风格的效果。 在这种情况下,对每一行使用horizontal LinearLayout ,使用android:gravity="center"来居中horizontal其内容。

您可以dynamic添加一些布局,例如:

  • 适配器对象可以是一个水平的LinearLayout

1-在Java代码中创buildLinearLayout并对其进行自定义(重力,…)

2-向linearLayout添加一些图标

3-将linearLayout添加到您的适配器

4-重复1,2,3


  // : declare new horizontal linearLayout ImageView myIcons[nomOfIcons]; // : add all icons to myIcons for(int i=1; i<=nomOfIcons; i++){ linearLayout.addView(myIcons[i - 1]); if(i%numOfIconsInOneHorizontalLinearLayout==0) { results.add(linearLayout); // add linearLayout to adapter dataSet // : declare new horizontal linearLayout } } if(n%numOfIconsInOneHorizontalLinearLayout!=0) // add last linearLayout if not added in the loop results.add(linearLayout); mAdapter.notifyDataSetChanged(); // update adapter 

你可以从谷歌FlexLayoutManager使用新的layoutManager它会给你很多控制和灵活性的recyclerView项目

将你的recyclerview放在xml中的linearlayout中。 和使用(为recyclerview和linearlayout)

android:layout_gravity="center"

和recyclerview的宽度应该是wrap_content而linearlayout应该有math_parent,你必须指定你的row_item的宽度

使用gridLayoutManager = new GridLayoutManager(context,6)并覆盖setSpanSizeLookup

例:

 int totalSize=list.size(); gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { @Override public int getSpanSize(int position) { int span; span = totalSize % 3; if (totalSize < 3) { return 6; } else if (span == 0 || (position <= ((totalSize - 1) - span))) { return 2; } else if (span == 1) { return 6; } else { return 3; } } }); 

这将工作,如果你想要显示连续3个项目,并保持在网格的中心。

根据您的要求更改网格布局pipe理器的跨度计数。