TextViewでテキストを(右から左の言語、つまりアラビア語で)書きたい。しかし、テキストの書き込み方向を右から左にしたいです。 gravity:right
は、テキストを右のみに揃えます。テキストを右から左に揃えたい(行に入力した順番で単語と数字が現れるように)。どうやって ?
古いバージョンのAndroidで使用でき、文字列のどこでも使用できるため、最新バージョンのAndroidでもより便利な別の巧妙な方法は、right-to-左マークまたは偶数左から右マーク必要な場合は文字列内:
left-to-right mark: ‎ or ‎ (U+200E)
right-to-left mark: ‏ or ‏ (U+200F)
これはそれがダウンしている方法です:
String rtl = "Hello \u200F(سلام)";
このメソッドの良い点は、(、{、[、!のような句読点が正しく正しく配置されていない場合でも使用できることです!例:
سلام! // wrong position
سلام! // right position by adding RLM after !
!が2行目に正しく配置されている様子を見てください。実際にはその後にRLMがあり、見えなくてもコピーして貼り付けることができます。
2番目に良い点は、ブラウザー、WordなどのRTLをサポートする任意のシステムでこのメソッド(これらの文字コード)を使用できることです。
このプロパティをTextViewに配置するだけで、すべてがうまく機能し、自動的にテキストが検出され、それに応じて変更されます
Android:textDirection="anyRtl"
遅すぎますが、Android:gravity="right"
働いた。
textviewのxmlでこの行を設定します。
Android:textDirection="locale"
使用してみてください
textview.setTextDirection(View.TEXT_DIRECTION_RTL);
または
textview.setTextDirection(View.TEXT_DIRECTION_ANY_RTL);
通常の編集テキストの場合、これは機能します
Android:textDirection="rtl"
ただし、パスワードフィールドの場合、これだけでは不十分です。
Android:textDirection="rtl"
Android:gravity="right"
それが私のために働いたのでこれを試してくださいAndroid:textDirection="rtl"
これらをeditTextに追加します。
Android:gravity="right"
Android:textDirection="rtl"
PS:Android:textDirection
APIレベル17が必要
つかいます Android:layoutDirection="rtl"
およびAndroid:textAlignment="viewStart"
は、テキストビューを右から左に表示します。
textViewの最適な方法textDirection、layoutDirectionを使用しない
<TextView
Android:id="@+id/viewCountTv"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:textDirection="anyRtl"
Android:gravity="center"/>
このような問題に関する自分の経験を追加するだけです。私の場合、提案された解決策に加えて、英語の文字をそのような文字のRTL(私の場合はヘブライ語)表現に置き換える必要がありました״
奇妙なことに、XMLコードで次のような属性を使用することにより、正しい句読点の付いた右から左のテキストが得られました。しかし、これは多言語テキストの完璧な解決策ではありません。
Android:textDirection="ltr"
Android:gravity="right"
ltrを設定すると、左ではなく右側にドットがあるなどの句読点の問題が修正されます。
gravity属性は、テキストを右から左に流します。