android - studio - reciclapp colombia
¿Cómo centrar artículos de una vista de reciclador? (7)
Necesito centrar elementos en cada fila para que sean como en esta maqueta. He estado buscando si hay algún diseño que funcione de esa manera sin mirar. los artículos se centran en sus filas.
Así es como se ve ahora en mi código.
Haga que el width
de la wrap_content
reciclador sea wrap_content
y el wrap_content
su contenedor en center_horizontal
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:id="@+id/recycrer_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:paddingLeft="16dp"
android:paddingRight="16dp" />
</LinearLayout>
Supongo que está utilizando LinearLayoutManager
con RecyclerView
para un efecto de estilo ListView
. En ese caso, use un LinearLayout
horizontal
para cada fila, con android:gravity="center"
para centrar su contenido.
Utilice gridLayoutManager = new GridLayoutManager(context,6)
y anule setSpanSizeLookup
.
Ejemplo:
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;
}
}
});
Esto funcionará si desea mostrar 3 elementos en una fila y permanecer en el centro de la cuadrícula.
Cambie la extensión del administrador de disposición de cuadrícula según su requerimiento.
pon tu recyclerview en linearlayout en xml. y uso (tanto para recyclerview como para linearlayout)
android:layout_gravity="center"
y el ancho de recyclerview debe ser wrap_content, mientras que linearlayout debe tener math_parent y debe especificar el ancho para su row_item
puede agregar algunos diseños dinámicamente, por ejemplo:
- el objeto adaptador puede ser un LinearLayout horizontal
1- Crea un LinearLayout en código java y personalízalo (gravedad, ...)
2- agregar algunos iconos a linearLayout
3- agrega linearLayout a tu adaptador
4- repetir 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
puede usar el nuevo layoutManager de google FlexLayoutManager le dará mucho control y flexibilidad sobre el recicladorVer elementos
Tome LinearLayout
en el diseño de la fila de elementos de su RecyclerView
y luego dele android:layout_gravity="center"
a LinearLayout
.
Para cada fila de imágenes, debe tomar LinearLayout
diferente.
Aquí hay un código de ejemplo:
<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>