آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

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

Abolfazl  9 سال پیش  9 سال پیش
0 0

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

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

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

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



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

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

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

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

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

پاسخ به سوال 
Abolfazl  9 سال پیش
0 0

 پاسخ صحیح

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

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


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