بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

پشتیبانی از RTL و LTR: جلوگیری از تغییر LayoutDirection با تغییر زبان OS

مدیریت گفتگو
Abolfazl 9 سال پیش
آخرین تغییر: 9 سال پیش

سلام
چند روزه این مشکل منو نگه داشته.
من نیاز دارم برنامم هم زبان های RTL (مثل فارسی) و هم LTR (مثل انگلیسی) رو ساپورت کنه. یعنی وقتی کاربر زبان اپلیکیشن (نه خود اندروید) رو مثلا فارسی گذاشت، تمام Layout ها راست به چپ باشن و وقتی زبان اپلیکیشن رو انگلیسی گذاشت تمام Layout ها چپ به راست باشن.
الان با android: supportsRTL=true دارم به درستی برنامه رو برای فارسی بهینه میکنم، مسئله اینه که یه سری از مردم زبان گوشیشون روی انگلیسی و یه سری فارسی باعث میشه جهت چیدمان Layout ها به هم بریزه.

سوالم اینه که چطوری بدون false کردن supportRTL از تغییر خودکار LayoutDirection با توجه به زبان OS جلوگیری کنم؟

به عنوان توضیح اضافه تر:
مثلا وقتی زبان گوشی انگلیسی باشه، وارد اپ Chrome بشین همه چی سر جاشه. وقتی زبان گوشی فارسی باشه، وارد Chrome بشین همه چی راستچین شده و منوها فارسی هستن. اما من میخوام هم وقتی زبان گوشی انگلیسی و هم وقتی فارسیه منوها فارسی باشن و layout ها راستچین مگه این که یوزر بیاد از تو تنظیمات زبان اپلیکیشن رو انگلیسی کنه؛ در این صورت بدون توجه به زبان گوشی باید منوها انگلیسی و layout ها چپپین بشن.

این تصاویرو تو stackoverflow گذاشتم به خاطر همین انگلیسیه:



نظرات

k112 9 سال پیش
خب شما واسه هر دو زبان لایوت جداگانه بساز و rtl رو fasle بکن
k112 9 سال پیش
Locale.getDefault().getDisplayLanguage();
Abolfazl 9 سال پیش
این راهو میدونم ولی به نظرم راه جالبی نیست، layout زیاد دارم حجم برنامه بیخود افزایش پیدا میکنه و در ضمن گوگل supportRTL رو واسه همین کار معرفی کرده، فقط یه راه میخوام که جلوی تغییر خودکار جهت رو بگیرم. مشکل دیگش اینه که باید خیلی چیزای دیگرم دستی درست کنم مثلا toolbar، navigation و... . واقعا راه دیگه ای نداره؟!

پاسخ‌ها 2

مشاهده پاسخ صحیح
General 9 سال پیش

من قبلا همچین کاری رو دیدم

شما باید از layout_parentStart استفاده کنید

یعنی اگه زبان انگلیسی باشه start ازسمت چپ میشه ولایه بندی از چپ انچام میشه واگه فارسی باشه از راست

مثلا درمورد margin هم همچین مواردی داریم مثلا marginStart اگه انگلیسی باشه از چپ فاصله میده واگه فارسی باشه از راست

نظرات

Abolfazl 9 سال پیش

 پاسخ صحیح

یه اشتباه کوچیک بود. مشکل حل شد.
اگه کسی مشکل منو داشت اینجا جوابشو نوشتم.

فقط اگه ممکنه جواب این سؤالمو بدین هر کار کردم درست نشد...
موفق باشید :)

نظرات


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .