Kể từ tiếng Ả Rập và tiếng Hebrew đang gây ra vấn đề, và tiếng Anh và tiếng Nga thì không, tôi sẽ đoán rằng một cái gì đó bị phá vỡ trong việc thực hiện cửa sổ thông tin mặc định liên quan đến RTL từ phải sang trái () ngôn ngữ. Đặc biệt nếu bạn đang chạy thử nghiệm trên Android 4.2, có thể là nội dung cửa sổ thông tin mặc định của Maps V2 đã áp dụng sai các thuộc tính liên quan đến RTL khác nhau.
May mắn thay, bạn có thể cung cấp nội dung cửa sổ thông tin của riêng mình bằng cách triển khai InfoWindowAdapter
và có getInfoContents()
trả lại View
mà bạn muốn sử dụng trong cửa sổ thông tin.
Ví dụ, this sample project (từ bản cập nhật vào ngày mai để cuốn sách của tôi) cho thấy tùy biến cửa sổ thông tin sử dụng này InfoWindowAdapter
:
class PopupAdapter implements InfoWindowAdapter {
LayoutInflater inflater=null;
PopupAdapter(LayoutInflater inflater) {
this.inflater=inflater;
}
@Override
public View getInfoWindow(Marker marker) {
return(null);
}
@Override
public View getInfoContents(Marker marker) {
View popup=inflater.inflate(R.layout.popup, null);
TextView tv=(TextView)popup.findViewById(R.id.title);
tv.setText(marker.getTitle());
tv=(TextView)popup.findViewById(R.id.snippet);
tv.setText(marker.getSnippet());
return(popup);
}
}
Nếu bạn muốn thay thế toàn bộ cửa sổ, bạn sẽ phải getInfoWindow()
trả về một View
. Nếu getInfoWindow()
trả về null
, getInfoContents()
được sử dụng cho nội dung của cửa sổ. Sau đó, bạn đính kèm một phiên bản của InfoWindowAdapter
qua setInfoWindowAdapter()
trên số GoogleMap
của mình.
Trong trường hợp của bạn, bạn có thể sử dụng bố cục của riêng mình để đảm bảo rằng bạn đang triển khai RTL chính xác. Đó là, về nguyên tắc, làm sáng tỏ vấn đề này. Có thể hiểu rằng Maps V2 thực hiện điều gì đó kỳ lạ để phá vỡ mã RTL mà thông thường sẽ hoạt động, trong trường hợp này bạn cần phải file an issue.
Nó có thể là Maps V2 không có hỗ trợ RTL thích hợp. Bạn có gặp vấn đề với ngôn ngữ LTR không? – CommonsWare
Chắc chắn tôi không phải là bạn đời. Dường như vấn đề chỉ áp dụng cho i18n. –
Một lần nữa, lý thuyết của tôi không phải là i18n nói chung, mà là ngôn ngữ RTL và LTR. Hỗ trợ RTL phù hợp tương đối mới trong Android và Maps V2 có thể đã làm hỏng nó.Bạn có thể sử dụng 'InfoWindowAdapter' để tạo nội dung của riêng bạn trên khinh khí cầu bản đồ, nơi bạn làm tốt hơn công cụ tích hợp với RTL. – CommonsWare