右から左に異なる画像がいくつかあります。関連する画像を自動ロードするために、RTL固有の描画可能なディレクトリまたはファイル名の一部のRTLポストフィックスを作成することは可能ですか? 17 lvlから追加されたldrtl post-fixは、layoutsディレクトリにのみ有効です。
この質問に答えるのはかなり遅いですが、私が見つけた方法を共有したいと思います。私は最初に他の人が言っていることを要約します。
仕様から始めましょう。
次のようなものを構築する必要があります。
login --> take picture --> win prize
RTLでは、次のようになります。
ezirp niw <-- erutcip ekat <-- nigol
したがって、大きな問題は、描画可能な矢印を反転する方法です。それをarrow_right.png
:-->
と呼びましょう。RTLでは、次のようにする必要があります:<--
Android> = 19の場合
他の人が述べたように、autoMirrored=true
フラグを使用できます。 (API19から利用可能)
使い方:
<ImageView ...
src="@drawable/arrow_right"
autoMirrored="true" />
資産:
├── 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
ご了承ください:
arrow_right.png
内部drawable-*
には-->
が含まれています備考:唯一の欠点は、下位互換性がないことです。
Android <19、Option 1の場合
他の人が指摘したように、ldrtl
オプションを使用できます。 (doc:リソースの提供)
使い方:
<ImageView ...
src="@drawable/arrow_right" />
資産:
├── 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
ご了承ください:
arrow_right.png
内部drawable-*
には-->
が含まれていますarrow_right.png
内部drawable-ldrtl-*
には<--
が含まれています。備考:この方法には何も問題はありませんが、10xのアセットファイルのように準備する必要があります。それで、次のオプションを見つけることができます。
Android <19、Option 2の場合
このオプションはrotationY="180"
属性を使用します。 (API11から利用可能)
rotationY="180"
をImageView
に設定すると、-->
は<--
になります。
したがって、次のようなことができます。
使い方:
<ImageView ...
src="@drawable/arrow_right"
Android:rotationY="@integer/angle_rtl_180" />
資産:
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
注意:
arrow_right.png
には-->
が含まれていますvalues/integers
には<integer name="angle_rtl_180">0</integer>
が含まれていますvalues-ldrtl/integers
には<integer name="angle_rtl_180">180</integer>
が含まれています備考:必要なアセットは1セットだけで、このソリューションはAPI 11から使用できます。使用方法は、Android:rotationY="@integer/angle_rtl_180"
を追加するだけです。
それが役に立てば幸い!
17+(4.2.x +)の場合はレイアウト方向(ld)リソース修飾子を使用でき、右から左(RTL)の場合はldrtlおよび左から右(LTR)にはldltrを使用できます。例:あなたは使うことができます
res/ drawable // Default drawable-ldltr // LTR drawable-ldrtl // RTL
また、他の修飾子と同様に、他の多くの修飾子と組み合わせることができます。 drawable-ldrtl-xhdpi
、ldrtlがxhdpiより前にあることに注意してください。そうしないと、aaptが文句を言うでしょう。
そして、@ Dennisが19+(4.4+)から言及したように、 autoMirrored を使用すると簡単になります
ドローアブルを自動ミラーリングするオプションがあります。 autoMirrored 属性を確認します。