2015-01-12 19 views
10

Trong một TextView, khi một văn bản bắt đầu bằng một chữ cái tiếng Do Thái, toàn bộ văn bản được hiển thị trong chế độ RTL.Làm cách nào để ngăn hướng văn bản từ phải sang trái tự động cho tiếng Do Thái và tiếng Ả Rập?

Vấn đề là trong trường hợp của tôi chỉ có từ đầu tiên là bằng tiếng Hebrew, trong khi toàn bộ câu là bằng tiếng Anh, vì vậy thay vì

דני went to school 

người dùng thấy

            went to school דני 

(người đầu tiên từ ở cuối câu, khi đọc bằng tiếng Anh)

Làm cách nào để ngăn điều này xảy ra và buộc văn bản bắt đầu từ bên trái?

+1

Tôi có thể nói đây là vấn đề thêm các ký tự BiDi phù hợp để cho biết toàn bộ văn bản là LTR ngoại trừ phần RTL nhỏ. Có vẻ như câu được mặc định là RTL vì nó bắt đầu bằng các ký tự RTL. Để xác minh điều này, bạn có thể thử thêm một chuỗi LTR ở đầu văn bản. – njzk2

+2

bắt đầu văn bản với '\ u200E' có thể đủ để buộc văn bản được coi là LTR. – njzk2

+0

Cảm ơn bạn, @ njzk2. nếu bạn thực hiện câu trả lời này, tôi sẽ chấp nhận nó. –

Trả lời

20

Ký tự Unicode là LTR hoặc RTL trung thành. Trong hầu hết các trường hợp, toàn bộ văn bản lấy định hướng của nó từ ký tự đầu tiên. Nhân vật Hebrew là RTL.

Xem http://en.wikipedia.org/wiki/Bi-directional_text

văn bản của bạn bắt đầu với một nhân vật RTL, và do đó được coi là RTL. Bạn có thể buộc nó được xem là LTR bằng cách sử dụng left-to-right mark, "\u200E".

Bắt đầu văn bản của bạn với ký tự đặc biệt này sẽ cho hệ thống bố cục định hướng rõ ràng của toàn bộ văn bản. Tuy nhiên, các phần RTL vẫn được coi là như vậy vì các ký tự rõ ràng là RTL.

Số, ví dụ, không phải là chỉ báo mạnh và do đó không ảnh hưởng đến hướng của phần được đặt. Vì vậy, các số giữa phần hướng khác nhau có thể là vấn đề và có thể cần chỉ dẫn rõ ràng.

+0

Xem thêm http://developer.android.com/reference/android/support/v4/text/BidiFormatter.html – vokilam

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