2013-12-15 10 views
17

Tôi có một vài hình ảnh trông khác nhau từ phải sang trái. Có thể tạo thư mục có thể kéo rtl cụ thể hoặc một số sửa chữa sau rtl cho tên tệp để tự động tải hình ảnh có liên quan không? Có vẻ như sau sửa lỗi ldrtl, được thêm từ 17 lvl, chỉ tốt cho thư mục bố cục.Cách chỉ định các drawables cụ thể RTL

Trả lời

11

Nó khá muộn để trả lời câu hỏi này, nhưng tôi muốn chia sẻ một phương pháp mà tôi vừa phát hiện ra. Trước tiên tôi sẽ tóm tắt những gì được đề cập bởi những người khác.


Hãy bắt đầu với một đặc điểm kỹ thuật .

Chúng ta cần phải xây dựng một cái gì đó như:

login --> take picture --> win prize

Trong RTL, nó sẽ trở thành:

ezirp niw <-- erutcip ekat <-- nigol

Vậy câu hỏi lớn đặt ra là làm sao chúng ta lật vào mũi tên drawable, chúng ta hãy gọi nó arrow_right.png: --> và trong RTL bạn muốn nó giống như sau: <--


Đối Android> = 19

Như những người khác đã đề cập, chúng ta có thể sử dụng autoMirrored=true cờ.(available from API19)

Việc sử dụng:

<ImageView ... 
    src="@drawable/arrow_right" 
    autoMirrored="true" />  

Tài sản:

├── drawable-xxxhdpi 
       └── arrow_right.png 
    ├── drawable-xxhdpi 
       └── arrow_right.png 
    ├── drawable-xhdpi 
       └── arrow_right.png 
    ├── drawable-hdpi 
       └── arrow_right.png 
    ├── drawable-mdpi 
       └── arrow_right.png 

Lưu ý rằng:

  • arrow_right.png bên drawable-* chứa -->

Ghi chú: Nhược điểm duy nhất là nó không tương thích ngược.


For Android < 19, Lựa chọn 1

Giống như những người khác đã chỉ ra, bạn có thể sử dụng tùy chọn ldrtl. (doc: Providing Resources)

Việc sử dụng:

<ImageView ... 
    src="@drawable/arrow_right" 
    autoMirrored="true" /> 

Tài sản:

├── drawable-xxxhdpi 
       └── arrow_right.png 
    ├── drawable-xxhdpi 
       └── arrow_right.png 
    ├── drawable-xhdpi 
       └── arrow_right.png 
    ├── drawable-hdpi 
       └── arrow_right.png 
    ├── drawable-mdpi 
       └── arrow_right.png 
    ├── drawable-ldrtl-xxxhdpi 
       └── arrow_right.png 
    ├── drawable-ldrtl-xxhdpi 
       └── arrow_right.png 
    ├── drawable-ldrtl-xhdpi 
       └── arrow_right.png 
    ├── drawable-ldrtl-hdpi 
       └── arrow_right.png 
    ├── drawable-ldrtl-mdpi 
       └── arrow_right.png 

Lưu ý rằng:

  • arrow_right.png bên drawable-* chứa -->
  • arrow_right.png bên trong drawable-ldrtl-* chứa <--.

Ghi chú: Không có gì sai với phương pháp này, ngoại trừ bạn cần chuẩn bị như tệp tài sản 10x. Vì vậy, nó dẫn tôi để tìm ra các tùy chọn tiếp theo.


For Android < 19, Lựa chọn 2

Tùy chọn này sẽ được sử dụng rotationY="180" thuộc tính. (available from API11)

Nếu bạn đặt rotationY="180" thành ImageView, --> sẽ chuyển thành <--.

Vì vậy, chúng tôi có thể thực hiện một số việc như sau.

Việc sử dụng:

<ImageView ... 
    src="@drawable/arrow_right" 
    android:rotationY="@integer/angle_rtl_180" /> 

Tài sản:

drawable 
    ├── drawable-xxxhdpi 
       └── arrow_right.png 
    ├── drawable-xxhdpi 
       └── arrow_right.png 
    ├── drawable-xhdpi 
       └── arrow_right.png 
    ├── drawable-hdpi 
       └── arrow_right.png 
    ├── drawable-mdpi 
       └── arrow_right.png 
    ├── values 
       └── integers.xml 
    ├── values-ldrtl 
       └── integers.xml 

Lưu ý:

  • arrow_right.png chứa -->
  • values/integers chứa <integer name="angle_rtl_180">0</integer>
  • values-ldrtl/integers chứa <integer name="angle_rtl_180">180</integer>

Ghi chú: Bạn chỉ cần 1 bộ tài sản, và giải pháp này có thể được sử dụng từ API 11, và việc sử dụng đơn giản là đủ bằng cách đơn giản thêm android:rotationY="@integer/angle_rtl_180".

Hy vọng điều đó sẽ hữu ích!

8

Có tùy chọn để tự động phản chiếu hình vẽ. Kiểm tra thuộc tính autoMirrored.

+0

Tôi cần hỗ trợ tổ ong, tự động nhân bản được hỗ trợ chỉ bắt đầu từ 19 lvl. –

35

Đối 17+ (4.2.x +), bạn có thể sử dụng theo hướng bố trí (ld) nguồn vòng loại, cho phải sang trái (RTL), bạn có thể sử dụng ldrtl và cho trái sang phải (LTR), bạn có thể sử dụng ldltr, ví dụ: bạn có thể sử dụng

res/ drawable // Default drawable-ldltr // LTR drawable-ldrtl // RTL

Cũng như bất kỳ vòng loại khác mà bạn có thể kết hợp nó với nhiều người khác ví dụ drawable-ldrtl-xhdpi, xin lưu ý cách ldrtl đến trước xhdpi nếu không, aapt sẽ khiếu nại.

Và như @Dennis đề cập từ 19+ (4.4+) nó được dễ dàng hơn khi bạn có thể sử dụng autoMirrored

+1

Làm thế nào về drawable-fa? Nó hoạt động. –

+0

Có gì drawable-fa, @ Mr.Hyde? Không thể tìm thấy bất kỳ thứ gì trong tài liệu. – lidkxx

+0

@lidkxx Không có gì. Đó là sai lầm của tôi. 'fa' là ngôn ngữ Ba Tư và là ngôn ngữ RTL. Tại thời điểm đó, tôi có nghĩa là làm thế nào tôi nên thêm các 'ldltr' &' ldrtl' vào một thư mục có tên 'drawable-fa' này. Nhưng bây giờ tôi đã có nó; Chỉ cần tạo 'drawable-ldrtl' cho bố cục bằng ngôn ngữ Ba Tư. –

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