web-dev-qa-db-ja.com

Android(textAlignment、gravity)のテキスト/レイアウトの配置

Android:textAlignmentAndroid:gravityの違いは何ですか?

51
Chrizzor

私が見ることができるのは、textAlignmentがViewクラスのメンバーであり、重力がTextViewクラスのメンバーであることだけです。そのため、TextViewとそのサブクラスでは重力を使用でき、すべてのビューでtextAlignmentを使用できます。

TextViewとそのサブクラスにはさらにテキスト配置機能が必要なので、textAlignmentには基本的なオプションしか存在しない重力のオプションがさらにあることがわかります。違いについての明確な文書を見つけていないので、それは私の推測にすぎませんが。

ドキュメントの次の2つのリンクを見ることができます: textAlignment および gravity

48
stinepike

API 15では、Android:textAlignmentが期待した結果にならない場合があります。以下のスニペットは、Android:textAlignment="center"を使用して最初のTextViewオブジェクトを中央に配置しようとします。 2番目はAndroid:gravity="center_horizontal"を使用します。 textAlignmentは効果がありませんが、重力は正常に機能します。 API 17+では、textAlignmentはテキストを期待どおりに中央揃えにします。

すべてのリリースでテキストが正しく配置されていることを確認するために、私は重力を使います。

<LinearLayout
    Android:layout_width="50dp"
    Android:layout_height="match_parent"
    Android:orientation="vertical">

    <TextView
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:layout_marginTop="5dp"
        Android:text="Fri"
        Android:textAlignment="center"
        Android:textSize="16sp" />

    <TextView
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:text="29"
        Android:gravity="center_horizontal"
        Android:textSize="18sp" />

</LinearLayout>

API 15の結果のレイアウト:
Resulting layout in API 15

API 17+の結果のレイアウト:
Resulting layout in API 17+

10
Will P

私が見た限りでは、textAlignmentはほとんど使用されていないようです。説明により、右または左の位置合わせを行う必要があります。重力は改善されたtextAlignmentのようです。

5
Pedro Matos

明示的に言及されていない別のポイント:

アプリケーションでRTLサポートが無効になっている場合(例: Android:supportsRtl="false"マニフェストapplicationタグの場合、ViewtextAlignmentはテキストの配置に対して機能しませんが、TextViewgravityは機能します。

gravityを好むもう1つの理由。

2
laalto