Intereting Posts
Возможно ли подключить устройство Android Wear с другим устройством BLE напрямую без взаимодействия с телефонным устройством? Сохранение массива String в SharedPreferences Приложение неожиданно остановилось: как отлаживать? Виджеты Android: как добавить Views в RemoteViews во время выполнения Как использовать андроидные библиотеки (apklibs) с maven и eclipse? Android, как применять форму и селектор одновременно для кнопки A / Looper: Не удалось создать будильную трубку. ERRNO = 24 Как изменить размер моего изображения в моем прокрутке, как это делается на этом изображении? Установите ориентацию на пейзаж в андроиде с обеих сторон Android работает очень медленно в режиме отладки Структура каталога Android Maven Широковещательный приемник не работает после перезагрузки устройства в Android Как вы имитируете низкую память в эмуляторе Android? Проложить маршруты с помощью API Карт Google v2 Как читать содержимое окна (с помощью accessibilityService) и вызывать пользовательский интерфейс, используя ссылку на другое приложение в Android?

Относительная компоновка alignParentLeft vs alignParentStart

Поэтому мне комфортно использовать относительные макеты, но, привыкнув к Android Studio, я заметил, что в моих относительных макетах child views он генерирует оба из следующих.

android:layout_alignParentLeft="true" android:layout_alignParentStart="true 

Я проверил здесь документы Android, но не вижу различия между ними. Разумеется, замена Android в Android Studio не показала различий. Есть ли это?

Solutions Collecting From Web of "Относительная компоновка alignParentLeft vs alignParentStart"

Это зависит от направления макета. Направление макета может быть слева направо (начало = слева, конец = справа) или справа налево (наоборот).

По умолчанию направление макета основано на локали (слева направо для таких языков, как английский, справа налево для таких языков, как арабский), но вы можете переопределить его с помощью атрибута layoutDirection XML или функции setLayoutDirection . например:

 android:layoutDirection="ltr" 

^ Будет эквивалент alignParentStart для выравниванияParentLeft на всех устройствах.

 android:layoutDirection="rtl" 

^ Будет эквивалент alignParentStart для выравниванияParentRight на всех устройствах. Вы также можете установить «locale», чтобы использовать локаль или «наследовать», чтобы наследовать направление макета из родительского представления.

Вам нужно добавить android:supportsRtl="true" в ваш AndroidManifest.xml для поддержки макетов справа налево.

Также связанные: android: textDirection

 android:layout_alignParentStart="true" 

Выравнивает начальную границу этого представления с начальным краем родительского элемента. Это левый край для локалей LTR (слева направо), а правый – на языках RTL (справа налево), таких как арабский, иврит, персидский и т. Д.

Причина, по которой Android Studio добавляет

 android:layout_alignParentLeft="true" 

К вашим представлениям относится поддержка старых платформ, которые появились до версии 4.2.x Jelly Bean . Атрибуты Start / End, такие как layout_alignParentStart , доступны только от API 17. Новые платформы возвращают атрибуты Left / Right только в том случае, если соответствующие атрибуты Start / End не найдены.

В случае, если ваше приложение поддерживает устаревшие платформы с помощью android:minSdkVersion ниже уровня 17 вы всегда должны предоставлять атрибуты Left / Right для своих просмотров. В противном случае проект не будет компилироваться с сообщением об ошибке, например

Чтобы поддерживать более старые версии, чем API 17 (проект указывает 7), вы также должны добавить android: layout_alignParentLeft = "true"

Также обратите внимание, что вашему Android-приложению необходимо заявить о своей поддержке локальных RTL в вашем AndroidManifest.xml .

 <application ... android:supportsRtl="true" /> 

Эти атрибуты «xxxStart», «xxxEnd» должны поддерживать макет RTL (справа налево) в некоторых локалях. Такие как

 android:paddingStart android:paddingEnd android:layout_marginStart android:layout_marginEnd ... 

Здесь вы можете увидеть больше .

В обычном (слева направо) макете «xxxStart» означает «xxxLeft» и «xxxEnd» означает «xxxRight». Но в макете «Право на левый» «xxxStart» означает «xxxRight» и «xxxEnd» означает «xxxLeft».

Но RTL поддерживается только на sdk 17 и выше.

Для поддержки более низкого sdk вы можете использовать «android: layout_marginStart» вместе с «android: layout_marginLeft». На нижних устройствах sdk будет использоваться «android: layout_marginLeft».