Вид сетки андроида размещает элементы справа налево

Я работаю над андроидным приложением с арабской версией.

В одном из интерфейсов у меня есть gridView. Таким образом, чтобы отображать элементы в правильном порядке, Мне нужно отображать элементы в GridView справа налево (и из корня сверху вниз). Для этого я попытался добавить эти атрибуты в GridView:

android:gravity="right"
android:layout_gravity="right"

К сожалению, элементы все еще отображаются слева направо.

любая идея сделать это правильно?

Ответы

Ответ 1

Вы можете достичь этого с помощью этого уродливого обходного пути:

  • добавьте эту строку в свой GridView в XML:

    Android: rotationY = "180"

  • также добавить одну и ту же строку в элемент GridView в XML:

    Android: rotationY = "180"

В общей сложности это дает вам вращение на 360 °, поэтому похоже, что GridView помещает элементы справа налево.

Ответ 2

добавьте эту строку в свой GridView в XML:

android:layoutDirection="rtl"

Ответ 3

Как сказал Нибха Джайн, его право. Также вам нужно добавить свойство "android: layoutAnimation" в GridView xml, как показано ниже.

<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/grid"    
    android:layoutAnimation="@anim/layout_grid_right_to_left"

а также вам необходимо определить файл анимации с атрибутом "android: direction", который фактически отображает ваши элементы справа налево или любое поддерживаемое направление.

Файл layout_grid_right_to_left.xml внутри папки для анимации

<gridLayoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
    android:columnDelay="0.5"
    android:directionPriority="row"
    android:direction="right_to_left"
    android:animation="@anim/fade" />

@anim/fade ниже

<alpha xmlns:android="http://schemas.android.com/apk/res/android"
   android:interpolator="@android:anim/accelerate_interpolator"
   android:fromAlpha="0.0" android:toAlpha="1.0"
   android:duration="@android:integer/config_longAnimTime" />

Его просто мои предпочтения. Добавьте/удалите атрибуты, которые соответствуют вашим потребностям. Играйте с ним.

Ответ 4

Основываясь на ответе traninho:

  • добавьте эту строку в свой GridView в XML:

    Android: rotationY = "180"

  • также добавить одну и ту же строку в элемент GridView в XML:

    Android: rotationY = "180"

выполните следующие действия:

  • В вашей GridActivity удалите это:

        gridView.setOnClickListener(...);
    
  • Теперь перейдите в свой gridAdapter и добавьте onClickListener в gridImage, поэтому ваш код должен выглядеть следующим образом:

        gridImage.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
    
                    //Do something
    
                }
            });
    

Это будет обрабатывать клики, как правило, на изображениях GridView.

Пожелайте, чтобы это помогло:)

Ответ 5

Create one new layout-ldrtl folder and make xml file grid view .

example...
  <GridView
        android:id="@+id/popoulat_category_list"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scrollingCache="true"
        android:smoothScrollbar="true"
        android:numColumns="2"
        android:scrollbars="none"
        android:horizontalSpacing="-5dp"
        android:verticalSpacing="-5dp"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        android:layout_marginStart="5dp"
        android:layout_marginEnd="5dp"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp"/>

локальный язык устройства - английский: введите здесь описание изображения

локальный язык устройства является парсианским: введите здесь описание изображения

Ответ 6

В дополнение к приведенному выше ответу:

android:layoutDirection="rtl"

В идеале, если вы хотите сделать это rtl осведомленным, так что только rtl в локалях, где он должен быть:

android:layoutDirection="locale"

Вы также можете сделать это, следуя содержащему макету

android:layoutDirection="inherit"