2014-10-19 58 views
9

Tôi đã tạo một ứng dụng, tôi đã thử nghiệm ứng dụng và điều đó tốt trên điện thoại của tôi. Nhưng ... khi tôi đưa ra .apk cho người khác có ngôn ngữ điện thoại là RTL, toàn bộ bố cục đã bị phá vỡ và nó làm rối tung mọi thứ.Tắt thay đổi bố cục tự động trên Android

Câu hỏi của tôi là - Làm cách nào để buộc ứng dụng của tôi chỉ sử dụng LTR và tắt thay đổi bố cục tự động làm hỏng toàn bộ thiết kế ứng dụng của tôi?

Trả lời

9

Android 4.2 đã thêm hỗ trợ gốc hoàn toàn cho bố cục RTL. Để tận dụng phản ánh bố cục RTL, chỉ cần thực hiện các thay đổi sau cho ứng dụng của bạn:

  • Tuyên bố trong tệp kê khai ứng dụng của bạn rằng ứng dụng của bạn hỗ trợ sao chép RTL. Cụ thể, thêm android:supportsRtl="true" vào phần tử trong tệp kê khai của bạn.

  • Thay đổi tất cả thuộc tính bố cục "trái/phải" của ứng dụng thành mới các tương đương "bắt đầu/kết thúc". Nếu bạn đang nhắm mục tiêu ứng dụng của mình đến Android 4.2 (targetSdkVersion hoặc minSdkVersion của ứng dụng là 17 trở lên), thì bạn nên sử dụng “bắt đầu” và “kết thúc” thay vì “trái” và “phải”. Đối với ví dụ , android:paddingLeft phải trở thành android:paddingStart. Nếu bạn muốn ứng dụng của mình hoạt động với các phiên bản cũ hơn Android 4.2 (mục tiêu củatargetSdkVersion hoặc minSdkVersion là 16 trở xuống), thì bạn phải thêm “bắt đầu” và kết thúc ”ngoài“ trái ”và“ phải ”. Đối với ví dụ , bạn sẽ sử dụng cả hai android:paddingLeftandroid:paddingStart.

Để kiểm soát chính xác hơn UI ứng dụng của bạn trong cả hai chế độ LTR và RTL, Android 4.2 bao gồm các API mới sau đây để giúp quản lý Xem phần:

  • android: layoutDirection - thuộc tính để thiết lập hướng của bố cục của một thành phần .
  • android: textDirection - thuộc tính để đặt hướng văn bản của thành phần.
  • android: textAlignment - attribute để đặt căn chỉnh văn bản của thành phần.
  • getLayoutDirectionFromLocale() - Phương pháp để nhận được Locale-định hướng

-- Source & Credits --

+3

Tôi muốn vô hiệu hóa RTL, dù sao đi nữa, vấn đề WS dòng ngu ngốc này dường như được thêm tự động là Eclipse/AS, chỉ thay đổi giá trị thành false và nó hoạt động. – Yehonatan

9

Trong file manifest của bạn và bên trong thẻ ứng dụng thêm hai dòng sau.

<manifest> 
    <application 
     . 
     . 
     . 
     android:supportsRtl="false" 
     tools:replace="android:supportsRtl" //(replace libraries' Rtl support with ours) 
     > 
    </application> 
</manifest> 

Lưu ý: (khoảng dòng thứ hai) Một số thư viện có hỗ trợ RTL trong file manifest của họ vì vậy nếu bạn muốn sử dụng các thư viện bạn phải thay thế dòng biểu hiện của họ về mã với bạn.

+0

Giải quyết được sự cố của tôi. Cảm ơn rất nhiều. – Merka

Các vấn đề liên quan