Wrap_content en recycleview, toma altura del elemento (lista horizontal)

Tengo un RecycleView, puesto a horizontal. Ahora me gustaría que la altura coincidiera con la altura de un elemento en la vista. No conozco la altura por adelantado.

Actualmente tengo esto:

Fragmento principal:

<RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbars="horizontal" android:layout_marginLeft="1dp" android:layout_marginRight="1dp" android:layout_marginTop="1dp" android:layout_gravity="top" android:id="@+id/my_listview"/> </RelativeLayout> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /> 

La imagen

 <ImageView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/banner_image" android:adjustViewBounds="true" android:scaleType="fitXY" android:background="@color/dark_gray" /> 

Pero siempre ocupa toda la pantalla. Así que tengo un montón de espacio en blanco en el medio. ¿Hay una manera que podría utilizar wrap_content en los artículos de recycleview?

Esto es lo que actualmente parece: Introduzca aquí la descripción de la imagen

He colocado 2 banners en la actualidad, la primera con los grandes espacios en blanco y la imagen pequeña es la que tiene el recyclerview. El siguiente es sólo la imagen colocada en un imageview (es lo que debería ser, pero lo quiero con un recyclerview para que pueda desplazarse a través de las banderas si tengo múltiples)

4 Solutions collect form web for “Wrap_content en recycleview, toma altura del elemento (lista horizontal)”

Es probable que infle el diseño incorrectamente.

¿Usaste?

 layoutInflater.inflate(R.layout.your_layout, null); 

Intente usar en su lugar. (La otra manera ensucia con la medición)

 layoutInflater.inflate(R.layout.your_layout, parent, false); 

Ahora me gustaría que la altura coincidiera con la altura de un elemento en la vista. No conozco la altura por adelantado.

Durante el pase de diseño, LinearLayoutManager no puede predecir la altura de todas las vistas en el adaptador que aún no se han creado, antes de tiempo.

Puede measure() una vista de elemento, probablemente la primera, del adaptador y, a continuación, establecer la altura de RecycleView través del código.

Si todos los elementos pueden tener diferentes alturas, entonces tendrás que medirlas todas, lo cual no es ciertamente la forma correcta de una buena interfaz de usuario.

¿Hay una razón por la que tiene el RecycleView envuelto dentro de un RelativeLayout ? Intentaría mover la RecycleView fuera de RelativeLayout primero.

En segundo lugar, veo que su ViewPager tiene un layout_weight pero no veo un atributo android:weightSum en el diseño de los padres. ¿Hay alguna razón por la que especifique ViewPager para tener un weight pero no el RecycleView ? ¿Ha intentado fijar el tamaño del RecyleView a algún dp para comprobar si el arreglo es correcto y ViewPager está usando el atributo de weight correctamente?

En tercer lugar intentaría jugar con el Imageview . Intente tal vez envolverlo dentro de un RelativeLayout tal vez? Usted tendrá que jugar con los parámetros allí y ver si funciona para usted. Porque quieres algo personalizado no hay una respuesta directa a esta pregunta.

También enfrenté el mismo problema y quise ver dos imágenes en dos columnas con el mismo tamaño en RecyclerView y podría solucionar el problema usando código abajo. Por favor, pruebe esto.

 // inner class to hold a reference to each item of RecyclerView public static class ViewHolder extends RecyclerView.ViewHolder { public ImageView imgViewIcon; public ViewHolder(View itemLayoutView) { super(itemLayoutView); DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics(); imgViewIcon = (ImageView) itemLayoutView.findViewById(R.id.item_icon); int colSpan = 2; imgViewIcon.getLayoutParams().height = (int) (displayMetrics.widthPixels / colSpan); imgViewIcon.getLayoutParams().width = (int) (displayMetrics.widthPixels / colSpan); } } 
  • Cómo usar el mismo Adaptador RecyclerView para diferentes diseños
  • Error: El atributo "theme" ya ha sido definido
  • Descripción de RecyclerView setHasFixedSize
  • RecycleView se bloquea en Fragmento porque LayoutManager es NULL
  • Tarjeta de material con la biblioteca Cardslib
  • Error al usar el RecyclerView: El niño especificado ya tiene un padre
  • Mostrar un RecyclerView en Fragmento
  • Cómo ordenar Strings en un Android RecyclerView?
  • RecyclerVista el espacio entre los elementos que se expanden al desplazarse
  • Android RecyclerView último elemento eliminar (tiempo de ejecución) error
  • AnimateLayoutChanges no funciona con RecyclerView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.