Вид сетки андроида размещает элементы справа налево
Я работаю над андроидным приложением с арабской версией.
В одном из интерфейсов у меня есть 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"