GridView error en el espaciado horizontal
He colocado un GridView en mi archivo de diseño XML.
Se muestra como quería en el inglés (LTR) en ambos API 17-21 Pero cuando he witch el idioma a árabe (RTL) el horizontalSpacing se ignora en la API 17-19, pero en la API 21 se muestra como quería.
- Imagen más grande para el primer elemento del android de gridview
- Cómo desmarcar un elemento en gridview en segundo clic en android?
- GridView: Obtener una vista por posición
- Android gridview se estrella en Galaxy 3
- Registrando UP / CANCEL desde el cuadro de diálogo cuando el evento DOWN fue disparado desde el LongPress de una vista
El mismo comportamiento se produjo en los emuladores y dispositivos Android reales.
Código XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/services_home_main_layout" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:id="@+id/services_home_contents" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentTop="true" android:layout_above="@+id/services_home_bottom_layout"> <GridView android:id="@+id/services_home_services_gridview" android:layout_width="match_parent" android:layout_height="match_parent" android:numColumns="3" android:horizontalSpacing="4dp" android:verticalSpacing="4dp" android:layout_margin="4dp" android:gravity="center" android:choiceMode="singleChoice" /> </LinearLayout> <LinearLayout android:id="@id/services_home_bottom_layout" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" /> </RelativeLayout>
Código XML para los elementos:
<TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/services_drawer_item_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" android:padding="4dp" android:background="@color/Gray_CC" android:drawableTop="@drawable/tall4" android:text="@string/app_name" />
Aquí están mis capturas de pantalla de la interfaz de usuario árabe (RTL):
Observe el espaciado horizontal en la primera captura de pantalla
- Android: ¿Cómo puedo acelerar el desplazamiento de GridView?
- GridView problema con el cambio de tamaño
- Adición dinámica de elementos de cuadrícula en vista de cuadrícula
- Eliminar el espacio de borde alrededor de GridView
- Cómo utilizar "Android-Universal-Image-Loader"
- Android: Tire para actualizar para GridView
- Eliminar elemento de GridView
- Android: El botón personalizado OnClickListener no se invoca
Tuve el mismo problema y traté de resolverlo, pero simplemente no funciona como se esperaba. Si tiene RTL establecido en su manifiesto, establezca la dirección de diseño de GridView a LRT y rotateY por 180.
Aquí está una explicación detallada: los elementos de lugar de vista de cuadrícula de Android de derecha a izquierda
Probar esto, no sé por qué, pero trabajó para mí
if(activity.getWindow().getDecorView().getLayoutDirection() == View.LAYOUT_DIRECTION_RTL) gridView.setHorizontalSpacing((int) -padding); else gridView.setHorizontalSpacing((int) padding);
El problema se puede solucionar estableciendo android: layoutDirection = "ltr" en el diseño que contiene el GridView y, a continuación, debe crear 2 diseños, uno para RTL y otro para LTR , y comprobar en el adaptador qué tipo debe utilizar.
He intentado este código
En xml:
android:horizontalSpacing="4dp"
En java
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1)//V.17 { gView.setLayoutDirection(View.LAYOUT_DIRECTION_RTL); if(Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP){ //V.21 gView.setHorizontalSpacing((int) -4); } }
- ClassNotFoundException: android.hardware.camera2.CameraAccessException con OpenCV 3.1.0
- Barra de herramientas de colapso con textShadow