Androidは文字の左右の配置を実現します。


ここでは原理の解析を行います。車輪を使うだけなら、一番下に引いてください。
1.TextView効果
まず、TextViewの表示効果を見てみましょう。

中国語の場合は大丈夫ですが、英語の場合の表示効果はあまりよくないです。右側に長い空白があります。ユーザーの体験を追求するには、このような表示効果は満足できないと思います。しかし、TextViewの内部にもAPIが提供されていないので、自分で実現するしかないです。
2.配置原理
原理:1行の残りの幅を現在の単語の間隔に均等に分けて、右揃えの効果を得ます。
二つの実現案があります。
(1)TextViewで一行の計算原理が簡単で乱暴です。この行を計算して次の単語が表示されない時、車を返して改行します。TextViewはすでに手動で計算してくれました。一行でどれぐらいの文字が表示されるかを計算しました。残りの幅を計算してから作成すればいいです。
問題があります。一行に単語が少ない場合、間隔が大きい問題があります。
たとえば

(2)手動で1行の文字数を計算し、残りの幅を計算して描画します。
このようにすると、最初のステップよりも多くなりました。自分で1行を計算すると、どれぐらいの文字が表示されますか?
しかし、このように問題があります。単語に英語が混ざっていたり、中国語でない場合、改行時に単語が切断されてしまう確率が高いです。
たとえば

3.最終案
以上の二つの案はいずれも欠陥があります。それなら、私達は出現した問題に対して解決案を提出しなければなりません。
現在の市場上には成熟した読書ソフトがあります。一番よく使われているのは左右揃えのレイアウト効果です。今の読書ソフトはどうやってこれらの問題を解決しますか?
まずWeChatの読書アプリの表示効果を見てください。

アプリの表示効果をもう一度確認してください。

WeChatは本を読んだり、手のひらを読んだりして、この長すぎる単語をカットオフして、-という記号を使って、この二つのカットオフされた単語をつなげて描いたら、上記の二つの案の問題が発生しません。
最終案は:
手動で1行を計算すると、いくつの単語が表示されますか?もし1行の最後の単語が表示されないなら、カットオフ処理を行います。中国語ではこの問題は存在しません。ここでは中国語でない場合の処理です。残りのスペースに合わせて描画します。
では、プランができたら、具体的にどうやって実現するかを見てみます。
4.最終実現
(1)まず現在のページの文字を見て、中英語を一つの単語に切り取り、具体的にgetWord List(String text)の方法の中で実現する。現在の文字を遍歴して、中国語であれば単語、非中国語であれば英語の単語を経由してつづり合わせて、最後に非中国語の単語につづり合わせます。
(2)現在の単語を遍歴することによって、各行の表示する単語の集合を計算し、具体的にはget Line List(List<String>frontList)という方法の中で実現する。単語を巡回した場合、最後の単語を追加すると、幅が一行の表示距離を超えています。最後の単語が中国語かどうかを判断します。そうでなければ、次の行に追加します。そうでなければ、切断処理を行います。
(3)第二のステップで計算した各行の単語は、残りの距離を計算して描きます。

5.最適化点
(1)コードの中で描画のロジックを修正した後、TextViewの基本的な属性についても適合します。例えばレイアウトの方向は、TextViewが持つ属性を使って設定できます。レイアウトの文字方向は、左か右かどちらかに設定できます。textAlignment属性の優先度が高く、同時に設定すればtextAlignment属性に準じます。

<com.example.testdemo1.XQJustifyTextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:textSize="16sp"
        android:gravity="start"
        android:textAlignment="textStart"/>
(2)実現された英語の単語のカットの効果について、最適化されたところがあります。いくつかの仲間の注意を受けて、音節の分割も可能であることを発見しました。また、マイクロクレジットの読書と手のひら読みの遮断効果を調べてみました。確かに音節を使って遮断していることが分かりました。このような展示効果はより完璧です。
一波の資料を検討したところ、母音で切断できることが分かりました。英語の単語の母音は5つあります。それぞれa、e、i、o、uです。母音に子音のルールをつけることでカットオフできます。例えばanとかenとか;ここでは一つの規則だけを実現して、他の規則は複雑すぎて、しばらく導入していません。
最適化後の効果を見てください。

GitHubソースの住所:
https://github.com/Amterson/AlginProject
ここで終わります。
以上はAndroidで、文字の左右に配置された詳しい内容を実現しました。Android文字の左右に配置された資料について、他の関連記事に注目してください。