Recycler View con GridLayoutManager horizontal El desplazamiento no funciona

tengo una actividad, que incluye un fragmento. Este fragmento incluye un Recycler View. Quiero que muestre los datos de un juego en una cuadrícula. Lo necesito para desplazarse hacia abajo (cada ronda del juego es una fila), pero también horizontal, porque necesito 5 – 10 Columnas. Cuando id use el parámetro android: scrollbars = "vertical | horizontal" en la vista del reciclador sólo se desplaza hacia abajo y hace que la columna sea muy pequeña. Esto ocurre incluso cuando lo pongo solo en horizontal.

Cómo no debe mirar.

Código: Actividad

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.sb.matt.doppelkopf.activities.GameActivity"> <fragment android:id="@+id/fragment_game" android:layout_width="match_parent" android:layout_height="match_parent" class="com.sb.matt.doppelkopf.fragments.game_fragment" tools:layout="@layout/fragment_game"> </fragment> </RelativeLayout> 

El fragmento

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.sb.matt.doppelkopf.fragments.game_fragment"> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView_gameData" android:scrollbars="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"/> </RelativeLayout> 

La vista de los elementos en la vista del reciclador

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="400dp" android:layout_height="200dp"> <TextView android:layout_width="400dp" android:layout_height="200dp" android:textAppearance="?android:attr/textAppearanceMedium" android:text="Test" android:id="@+id/txt_inhalt" android:layout_centerVertical="true" android:layout_marginTop="5dp" android:layout_marginBottom="5dp" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true"/> </RelativeLayout> 

Código del fragmento

 package com.sb.matt.doppelkopf.fragments; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.sb.matt.doppelkopf.R; import com.sb.matt.doppelkopf.activities.GameActivity; import com.sb.matt.doppelkopf.adapters.GameData_Adapter; import com.sb.matt.doppelkopf.data.GameData; /** * A simple {@link Fragment} subclass. */ public class game_fragment extends Fragment { private GameData gameData; private RecyclerView rGridView; GameData_Adapter adapter; public game_fragment() { // Required empty public constructor } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment final View v = inflater.inflate(R.layout.fragment_game, container, false); gameData = ((GameActivity)getActivity()).getGameData(); return v; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); String[][] gameData = ((GameActivity) getActivity()).getGameData().getViewData(); rGridView = (RecyclerView) getActivity().findViewById(R.id.recyclerView_gameData); rGridView.setLayoutManager(new GridLayoutManager(getActivity(), gameData[0].length)); adapter = new GameData_Adapter(gameData); rGridView.setAdapter(adapter); } } 

Código del adaptador, su utiliza una matriz 2 dimensional para llenar la rejilla.

 package com.sb.matt.doppelkopf.adapters; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.sb.matt.doppelkopf.R; import com.sb.matt.doppelkopf.data.SingleGameDataItem; import java.util.ArrayList; /** * Created by matts on 16.01.2016. */ public class GameData_Adapter extends RecyclerView.Adapter<GameData_Adapter.ViewHolder> { private String[][] gameData; private ArrayList<SingleGameDataItem> list; public static class ViewHolder extends RecyclerView.ViewHolder { View MyView; TextView textView; public ViewHolder(View view) { super(view); MyView = view; textView = (TextView) view.findViewById(R.id.txt_inhalt); } } public GameData_Adapter (String[][] gameData) { this.gameData = gameData; list = new ArrayList<SingleGameDataItem>(); for(int i = 0; i < gameData.length; i++) { for(int j = 0; j < gameData[0].length; j++) { SingleGameDataItem item = new SingleGameDataItem(gameData[i][j]); list.add(item); } } } @Override public GameData_Adapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { // create a new view View v = LayoutInflater.from(parent.getContext()) .inflate(R.layout.singlegamedataitem, parent, false); // set the view's size, margins, paddings and layout parameters ViewHolder vh = new ViewHolder(v); return vh; } // Replace the contents of a view (invoked by the layout manager) @Override public void onBindViewHolder(ViewHolder holder, int position) { // - get element from your dataset at this position // - replace the contents of the view with that element holder.textView.setText(list.get(position).getInhalt()); } @Override public int getItemCount() { return list.size(); } } 

que estoy haciendo mal? : /

Se utilizó incorrecto constructor new GridLayoutManager(getActivity(), gameData[0].length) . Javadoc dice que "Crea un GridLayoutManager vertical ".

Intente new GridLayoutManager(getActivity(), 1, GridLayoutManager.HORIZONTAL, false) lugar.

Aquí 1 cuenta como número de filas.

  • Tener dos grupos de una sola selección en ActionBar no funciona, pero adjuntar un menú emergente en su lugar no funciona bien
  • Cómo mostrar el contador de globo sobre el icono del lanzador de aplicaciones en android
  • ¿Barra de herramientas Android con dos líneas en el título?
  • Match_parent propiedad para los niños en un RelativeLayout
  • Selector desplegable no funciona en Jelly Bean
  • Android.permission.BATTERY_STATS api
  • Android Imageview rellena el ancho de la pantalla
  • Ampliación de la clase de Android View para agregar un dropshadow
  • Alinear correctamente TextViews en RelativeLayout
  • ¿Cómo mostrar fórmulas matemáticas en mi aplicación Android?
  • XML selector de fondo no funciona en 2.3
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.