- Для чего используется android: supportsRtl = «true» в XML-файле AndroidManifest
- Для чего используется android: supportsRtl = «true» в XML-файле AndroidManifest
- 5 невероятно полезных лайфхаков
- Что такое android: поддерживает Rtl = «true» в файле AndroidManifest xml
- Для чего используется android: supportsRtl = «true» в XML-файле AndroidManifest
- 3 ответа
- RTL Support on Android. Here is all you need to know
- Getting Started
- XML Layouts
- Drawables
- 📌 Small Tip :
- res/values/integers.xml
- res/values-ldrtl/integers.xml
- Animations
- Java Files
- Extras
- Conclusion
Для чего используется android: supportsRtl = «true» в XML-файле AndroidManifest
Всякий раз, когда я создавал новый проект в студии Android, я получал android:supportsRtl=»true» в своем приложении AndroidManifest File.
Что используется в приложении или какие преимущества и недостатки, когда я добавляю или не добавляю в свое приложение AndroidManifest.
Объявляет, готово ли ваше приложение поддерживать макеты с письмом справа налево (RTL). Если установлено значение true, а targetSdkVersion — 17 или выше, различные API-интерфейсы RTL будут активированы и использоваться системой, чтобы ваше приложение могло отображать макеты RTL. Если установлено значение false или для targetSdkVersion установлено значение 16 или ниже, RTL API будут игнорироваться или не будут иметь никакого эффекта, и ваше приложение будет вести себя одинаково независимо от направления макета, связанного с выбором локали пользователя (ваши макеты всегда будут оставаться -направо).
По умолчанию этот атрибут имеет значение false.
Этот атрибут был добавлен в API уровня 17.
если вы строите приложение на арабском, урду, иврит и т.д. . или любой язык , который написан справа налево , вы должны установить , android:supportsRtl чтобы true , вот как вы говорите макет быть справа налево, а значение по умолчанию этот атрибут ложный.
Из руководств по Android API:
Объявляет, готово ли ваше приложение поддерживать макеты с письмом справа налево (RTL).
Если установлено значение true, а targetSdkVersion — 17 или выше, различные API-интерфейсы RTL будут активированы и использоваться системой, чтобы ваше приложение могло отображать макеты RTL. Если установлено значение false или для targetSdkVersion установлено значение 16 или ниже, RTL API будут игнорироваться или не будут иметь никакого эффекта, и ваше приложение будет вести себя одинаково независимо от направления макета, связанного с выбором локали пользователя (ваши макеты всегда будут оставаться -направо).
По умолчанию этот атрибут имеет значение false.
Этот атрибут был добавлен в API уровня 17.
Источник
Для чего используется android: supportsRtl = «true» в XML-файле AndroidManifest
5 невероятно полезных лайфхаков
Whenever I created new project in android studio, I got android:supportsRtl=’> ?> var13 -> в моем приложении AndroidManifest File.
Что используется в приложении или какие преимущества и недостатки, когда я добавляю или не добавляю в свое приложение AndroidManifest.
- 5 Я не считаю это повторяющимся вопросом. Оба относятся к RTL, но люди, которые ищут их, откладывают.
- 2 Вопрос, на который ссылаются как на дубликат, неверен. Совершенно другой контекст для пользователя, ищущего вопрос.
- TL; DR android.jlelse.eu/…
Объявляет, готово ли ваше приложение поддерживать макеты с письмом справа налево (RTL). Если установлено значение true, а targetSdkVersion — 17 или выше, различные API-интерфейсы RTL будут активированы и использоваться системой, поэтому ваше приложение может отображать макеты RTL. Если установлено значение false или targetSdkVersion имеет значение 16 или ниже, RTL API будут игнорироваться или не будут иметь никакого эффекта, и ваше приложение будет вести себя одинаково независимо от направления макета, связанного с выбором локали пользователя (ваши макеты всегда будут оставаться -направо).
Значение по умолчанию этого атрибута — false.
Этот атрибут был добавлен в API уровня 17.
если вы создаете приложение на арабском, урду, иврите и т. д. или на любом языке, который пишется справа налево, вы должны установить android:supportsRtl к true , так вы указываете, что макет должен располагаться справа налево, а значение этого атрибута по умолчанию — false.
- 14 Лучше, чем документация Google.
- 1 Спасибо за другие ответы, но такой ответ более полезен и дополняет документацию. Спасибо, @Sarah.
- привет, мое приложение не поддерживает арабский язык, но я использую android: supportsRtl = «true» в manifest.xml. Это проблема?
- 3 @ozanurkan — Не проблема. Этот ответ неверен / вводит в заблуждение. android:supportsRtl=’true’ позволяет поддержка для языков с письмом справа налево. Без этого макет всегда будет слева направо, Однако сам по себе Это не измените раскладку справа налево. Он просто активирует другие атрибуты — один из этих новых атрибутов определяет, будет ли он писать слева направо или справа налево.
Из руководств по Android API:
Объявляет, готово ли ваше приложение поддерживать макеты с письмом справа налево (RTL).
Если установлено значение true, а targetSdkVersion — 17 или выше, различные API-интерфейсы RTL будут активированы и использоваться системой, поэтому ваше приложение может отображать макеты RTL. Если установлено значение false или targetSdkVersion имеет значение 16 или ниже, RTL API будут игнорироваться или не будут иметь никакого эффекта, и ваше приложение будет вести себя одинаково независимо от направления макета, связанного с выбором локали пользователя (ваши макеты всегда будут оставаться -направо).
По умолчанию этот атрибут имеет значение false.
Этот атрибут был добавлен в API уровня 17.
Источник
Что такое android: поддерживает Rtl = «true» в файле AndroidManifest xml
Всякий раз, когда я создавал новый проект в андроид-студии, у меня был android:supportsRtl=»true» в моем приложении AndroidManifest File.
Что используется в приложении, или что есть преимущества и недостатки, когда я добавляю или не добавляю в приложение AndroidManifest.
Объявляет, желает ли ваше приложение поддерживать макеты Right-to-left (RTL). Если установлено значение true и для параметра targetSdkVersion установлено значение 17 или выше, различные RTL-API будут активированы и использованы системой, чтобы ваше приложение могло отображать макеты RTL. Если установлено значение false или если для параметра targetSdkVersion установлено значение 16 или ниже, API-интерфейсы RTL будут проигнорированы или не будут иметь никакого эффекта, и ваше приложение будет вести себя одинаково независимо от направления макета, связанного с выбором пользователя Locale (ваши макеты всегда будут оставлены -направо).
Значение по умолчанию для этого атрибута – false.
Этот атрибут был добавлен в уровне API 17.
Если вы создаете приложение на арабском, урду, иврите и т. Д. … или на любом языке, написанном справа налево, вы должны установить android:supportsRtl в true , так вы указываете макет справа налево и Значение по умолчанию для этого атрибута – false.
Из Android API-руководств:
Объявляет, желает ли ваше приложение поддерживать макеты Right-to-left (RTL).
Если установлено значение true и для параметра targetSdkVersion установлено значение 17 или выше, различные RTL-API будут активированы и использованы системой, чтобы ваше приложение могло отображать макеты RTL. Если установлено значение false или если для параметра targetSdkVersion установлено значение 16 или ниже, API-интерфейсы RTL будут проигнорированы или не будут иметь никакого эффекта, и ваше приложение будет вести себя одинаково независимо от направления макета, связанного с выбором пользователя Locale (ваши макеты всегда будут оставлены -направо).
Значение по умолчанию для этого атрибута – false.
Этот атрибут был добавлен в уровне API 17.
Источник
Для чего используется android: supportsRtl = «true» в XML-файле AndroidManifest
Каждый раз, когда я создавал новый проект в студии Android, в моем приложении AndroidManifest File появлялся android:supportsRtl=»true» .
Что используется в приложении или какие преимущества и недостатки, когда я добавляю или не добавляю в свое приложение AndroidManifest.
3 ответа
Объявляет, готово ли ваше приложение поддерживать макеты с письмом справа налево (RTL). Если установлено значение true, а targetSdkVersion — 17 или выше, различные API-интерфейсы RTL будут активированы и использоваться системой, чтобы ваше приложение могло отображать макеты RTL. Если установлено значение false или targetSdkVersion имеет значение 16 или ниже, RTL API будут игнорироваться или не будут иметь никакого эффекта, и ваше приложение будет вести себя одинаково независимо от направления макета, связанного с выбором локали пользователя (ваши макеты всегда будут оставаться -направо).
По умолчанию этот атрибут имеет значение false.
Этот атрибут был добавлен в API уровня 17.
Если вы создаете приложение на арабском, урду, иврите и т. д. или на любом другом языке, написанном справа налево, вы должны установить android:supportsRtl на true , вот как вы говорите макету: справа налево, и значением по умолчанию для этого атрибута является false.
Из руководств по Android API:
Объявляет, готово ли ваше приложение поддерживать макеты с письмом справа налево (RTL).
Если установлено значение true, а targetSdkVersion — 17 или выше, различные API-интерфейсы RTL будут активированы и использованы системой, чтобы ваше приложение могло отображать макеты RTL. Если установлено значение false или targetSdkVersion имеет значение 16 или ниже, RTL API будут игнорироваться или не будут иметь никакого эффекта, и ваше приложение будет вести себя одинаково независимо от направления макета, связанного с выбором локали пользователя (ваши макеты всегда будут оставаться -направо).
По умолчанию этот атрибут имеет значение false.
Этот атрибут был добавлен в API уровня 17.
Источник
RTL Support on Android. Here is all you need to know
Apr 14, 2017 · 4 min read
There comes a point in an app’s lifecycle when you decide to widen your audience. Although your app works great and you have a huge number of daily downloads, not everyone is happy. Why 🤔? No RTL (Right to Left) Layout support.
Few languages such as Arabic, Hebrew, or Persian are written from Right to Left. To handle them, Android supports RTL layouts from API 17+ i.e., Android 4.2 (Jelly Bean) .
Getting Started
- In order to support RTL in your app, you first need to add android:supportsRtl=»true» to the element in your manifest file.
Woohoo… 🎉Done. Your app now supports RTL. But lets see how it looks. You can check your app in RTL mode by doing one of two things.
- Select one of the RTL languages as your device language.
- Or from Developer Options in Settings , check Force RTL layout Direction . I find this option more convenient but, do note, this does not change your System language.
XML Layouts
Yo u ’ll need to make the following changes in all your Layouts
- If your app only supports API ≥ 17 , replace all the layout_marginLeft/layout_marginReft/paddingLeft/paddingRight or any other Left and Right layout property with Start and End equivalent. For example android:paddingLeft will be replaced with android:paddingStart .
- If your app supports API then instead of replacing the Left and Right layout properties, add their Start and End layout property equivalent alongside.
There is a much easier way to do the above changes without going through all the files and then doing it manually. Android Studio can do this for you. Just go to Android Studio > Refactor > Add RTL support where possible…
I would recommend you checking your app once after applying this change as you might not want all your Layouts/Views to be RTL. If you want to force any layout to LTR then just add android:layoutDirection=»ltr» to that view.
Drawables
Time to search for all those drawables that you would want to be mirrored for RTL. Since resources can have variants based on device aspects like Orientation, Screen Density, API version, you can also have variants for different Layout Directions i.e., RTL or LTR. All you need to do is add the RTL variants of the drawables that you want to be mirrored.
📌 Small Tip :
If your Toolbar defines back arrow nav icon like this
app:navigationIcon=»?attr/homeAsUpIndicator»
This back button is consistent with Layout Directions.
But only works on API 23+ 😣, below that it just points Left.
And what if you don’t have RTL variant for your drawables? You can use android:autoMirrored=»true» . But this works on api 19+ only. If you want to mirror Drawables or any View on API android:rotationY=»@integer/locale_mirror_flip» to the View you want to be mirrored. And define
res/values/integers.xml
res/values-ldrtl/integers.xml
I use this trick to mirror one of the Progress Indicator that doesn’t support RTL. This works on API 11+.
Animations
Animations that use X axis for transitions will not work properly. For example TranslateAnimation — You will need to add a RTL variant for these as well.
For example: android:fromXDelta=»-100%p» will become android:fromXDelta=»100%p» in RTL variant of this animation,
android:pivotX=»25%» will become android:pivotX=»75%» .
Java Files
I would recommend defining all animations, layout, etc as xml resource only. Because RTL support for those programmatically defined layouts and animations is painful. Also, the compilation will take more time if you modify a Java file instead of XML.
If you still find these defined in your java files then this is what you’ll need to do
- Programmatically defined Animations with X axis values need to have different values for RTL, as the X axis always starts from Left in both layout directions. Basically any X anywhere in android means from left.
- If you have setMargin(left, top, right, bottom) then also add setMarginStart(start) and setMarginEnd(end) .
- setPadding(left, top, right, bottom) will be replaced with setPaddingRelative(start, top, end, bottom) .
- setGravity(Gravity.LEFT/RIGHT) will be replaced with setGravity(Gravity.START/END) .
- Any other layout property like LayoutParams rules for RelativeLayout will also need to be changed.
- All those Horizontal RecyclerView, ListView, ViewPager , etc will need your attention as well.
For Example : A Horizontal RecyclerView can use setStackFromEnd(true) on it’s LayoutManager in case of RTL layout. - If you want Layout Direction of a View on runtime then use
ViewCompat. getLayoutDirection(view)
Note : This always returns LTR if called from the Constructor of a View. - If you want Layout Direction from a Context then use
Configuration config = context.getResources().getConfiguration();
if (config.getLayoutDirection() == View. LAYOUT_DIRECTION_RTL) <
//RTL
>
Extras
If you have completed all of the above then I believe you should have pretty good RTL Support. There are few more things you can look at for your final touch.
Conclusion
Support for RTL is not that difficult on Android. I wish I had supported it from day 1 instead of doing it at a later stage in my app. If you found something missing or have suggestions then do comment.
Источник