Android TextViewでテキストを右揃え


215

私が持っているTextView自分のアプリケーションに。テキストを右揃えにしたい。追加してみました:

android:gravity="right"

しかし、これは私にはうまくいきません。

何が悪いのでしょうか?

回答:


193

私はあなたがこれをやっていると思います:android:layout_width = "wrap_content"
これが事実である場合、これをしてください:android:layout_width = "match_parent"


2
@Bishan塗りつぶしは残りのスペースを塗りつぶし、マッチは親の幅と同じに設定します
Troy Cosentino

11
実際、fill_parentとmatch_parentは同じものです。どうやらfill_parentは混乱を招くため、名前がmatch_parentに変更されました。
Edward Falk

158

一般的に、android:gravity="right"とは異なりandroid:layout_gravity="right"ます。

1つ目は、ビュー内のテキスト自体の位置に影響を与えるため、テキストを右揃えにする場合layout_width=は、"fill_parent"またはのいずれかでなければなりません"match_parent"

2つ目は、親の内部でのビューの位置に影響を与えます。つまり、オブジェクト自体(編集ボックスまたはテキストビュー)を親ビューの内部に配置します。


83

より良い解決策は、最も単純な解決策であり、コードの動作の変更が少ない解決策です

2つのプロパティでのみこの問題を解決できるとしたらどうでしょTextViewうか。

子供LinearLayoutの動作を変更する可能性があるプロパティを変更する必要はありませんLinearLayoutか?

この方法を使用LinearLayoutすると、プロパティと動作を変更する必要がなく、次の2つのプロパティをターゲットに追加するだけで済みますTextView

android:gravity="right"
android:textAlignment="gravity"

将来的に別の問題を引き起こす可能性があり、ターゲットの父親を変更するのではなく、ソリューションを解決するためにターゲットのみを変更する方が良いでしょうか?それについて考えなさい:)


パッケージandroidのリソース 'textAlignment'のリソース識別子が見つからないというエラーが表示されます。
anu 2014

TextViewプロパティにアクセスしていることを確認しましたか?: -あなたはここに参照からプロパティを確認することができますdeveloper.android.com/reference/android/view/...
パウロ・ロベルト・ローザ

4
textAlignmentはAPIレベル17(Android 4.2)で追加されました。これが機能するには、エミュレータ/デバイスで4.2以降が実行されている必要があります。
2014年

私はこのtextAlignmentプロパティをAndroid 4.1.2で使用しようとしましたが、「属性 'textAlignment'のリソース識別子が見つかりません」というエラーが発生しました。私はこのエラーの答えをここで見つけましたstackoverflow.com/a/20176191/723507。4.0.3ではどのように使用できますか?
2014年

20

android:layout_gravity親レイアウトを基準にテキストビューを配置するために使用されます。 android:gravityテキストビュー内でテキストを配置するために使用されます。

テキストビュー内のテキストを右に揃えようとしていますか、それとも親レイアウトに対してテキストビュー自体を右に移動しますか、それとも両方を達成しようとしていますか?


テキストビュー内のテキストを右に揃えようとしています
Bishan

11

次のコードスニペット:

android:textAlignment="textEnd"
android:layout_gravity="end"

私にとってはうまくいきます


11

誰かがまだ必要な場合

android:gravity="end"

何のため?
グムル

LTRでは、これはテキストを右に、RTLでは左に揃えます
npk

8

使用していないことを確認してください。使用していないandroid:layout_width="wrap_content"場合、テキストを配置するための十分なスペースがないため、重力を設定できません。代わりにandroid:layout_width="fill_parent"


7
android:gravity="right"

基本的には線形レイアウトで使用されるため、TextViewまたはEditTextの幅を次のように設定する必要があります。

android:layout_width = "match_parent"

そして

相対レイアウトで作業している場合は、

android:layout_alignParentRight="true"


5

ある場合RelativeLayoutは使用できますandroid:layout_toRightOf="@id/<id_of_desired_item>"

または

rightデバイスの角に合わせたい場合はandroid:layout_alignParentRight="true"


4

多くの開発者が承知しているWEBを利用した重力概念について説明します。

android_layout_gravity 振る舞う float:left|right|top|bottom

一方android_gravitytext_align:centre|left|right

Androidでは、floatはandroid_layout_gravityであり、text_align:はandroid_gravityです。

また、android_layout_gravityは親を基準にして適用されます。ここで、android_gravityはその子または内部コンテンツに適用されます。

メモそのビューがmatch_parentがあるとき(それが中央にスペースがある場合)android_gravityにのみ機能します。


3

以下は私のために働きます:

<TextView
    android:id="@+id/tv_username"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Sarah" />

<TextView
    android:id="@+id/tv_distance"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/tv_username"
    android:layout_alignParentEnd="true"
    android:layout_toEndOf="@+id/tv_username"
    android:text="San Marco"
    android:textAlignment="viewEnd" />

2番目のTextViewのandroid:layout_alignParentEndandroid:textAlignment設定に注意してください。


2

以下を使用できます。

    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"


2

私の場合、私が使っていたRelative LayoutAのemptyString

1時間これに苦労した後。これだけが私にとってうまくいきました:

android:layout_toRightOf="@id/welcome"
android:layout_toEndOf="@id/welcome"
android:layout_alignBaseline="@id/welcome"

layout_toRightOfまたはlayout_toEndOf両方とも機能しますが、より適切にサポートするために、両方を使用しました。

より明確にするために:

これは私がやろうとしていたことでした:

ここに画像の説明を入力してください

そして、これはエミュレータの出力でした

ここに画像の説明を入力してください

レイアウト:

<TextView
    android:id="@+id/welcome"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="16dp"
    android:layout_marginTop="16dp"
    android:text="Welcome "
    android:textSize="16sp" />
<TextView
    android:id="@+id/username"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@id/welcome"
    android:layout_toRightOf="@id/welcome"
    android:text="@string/emptyString"
    android:textSize="16sp" />

次のことに注意してください。

  1. android:layout_width="wrap_content" 働く
  2. Gravity 使用されていません

1

私も同じ問題に直面し、TextViewのlayout_widthがwrap_contentを持っているときに問題が発生していることを理解しました。match_parentとしてlayout_widthとandroid:gravity = "gravity"が必要です


1
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent">

  <TextView
    android:id="@+id/tct_postpone_hour"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:layout_gravity="center"
    android:gravity="center_vertical|center_horizontal"
    android:text="1"
    android:textSize="24dp" />
</RelativeLayout>

ナンバーワンを水平と垂直の両方の中央に揃えます。



0

私の場合は、属性「layout_alignRight」をテキストで使用しました:

android:layout_alignRight="@+id/myComponentId"

右マージンを追加したい場合は、例として「Layout_Margin Right」属性を「20dp」に設定します。

android:layout_marginRight="20dp"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.