web-dev-qa-db-ja.com

Android TextViewでテキストを右揃えにする

私のアプリケーションにはTextViewがあります。その中のテキストを右に揃えます。私は追加してみました:

Android:gravity="right"

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

何が悪いのでしょうか。

204
Bishan

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

181
a fair player

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

最初のものはビュー内のテキスト自体の位置に影響するため、テキストを右揃えにする場合は、layout_width="fill_parent"または"match_parent"のいずれかにする必要があります。

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

147
wiztrail

より良い解決策は、最も単純な方法と、コードの動作をほとんど変更しない方法です

あなたがTextViewの2つのプロパティだけでこの問題を解決することができるならば?

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

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

Android:gravity="right"
Android:textAlignment="gravity"

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

77
Paulo Roberto

Android:layout_gravityは、テキストビューを親レイアウトに対して揃えるために使用されます。 Android:gravityは、テキストビュー内でテキストを揃えるために使用されます。

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

20
rogerstone

次のコードスニペット:

Android:textAlignment="textEnd"
Android:layout_gravity="end"

私にとって素晴らしい作品

10
Fey Agape

誰かがまだ必要としている場合

Android:gravity="end"
8
npk

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

8
Lalit Poptani
Android:gravity="right"

これは基本的にはリニアレイアウトで使われるので、TextViewまたはEditTextの幅を

Android:layout_width = "match_parent"

そして

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

Android:layout_alignParentRight="true"
7
Kushal Ramola

RelativeLayoutにある場合は、Android:layout_toRightOf="@id/<id_of_desired_item>"を使用できます。

または

デバイスのrightコーナーに合わせたい場合は、Android:layout_alignParentRight="true"という場所にします。

5
user2342517

(LinearLayout)Android:layout_width="match_parent"とTextViewのAndroid:layout_gravity="right"を作ります。

5

多くの開発者がそれを知っているので、WEBを使って重力の概念を説明しましょう。

Android_layout_gravityfloat:left|right|top|bottomの動作

Android_gravitytext_align:centre|left|rightとして機能します

AndroidではfloatはAndroid_layout_gravityでtext_align:はAndroid_gravityです。

そしてAndroid_layout_gravityは親に対して相対的に適用されます。 Android_gravityがその子コンテンツまたは内部コンテンツに適用される場合

Android_gravityは、Viewがmatch_parentの場合(中央に余白がある場合)にのみ機能します。

4
Xar E Ahmer

以下は私のために働く:

<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設定に注意してください。

3
David Cheung

あなたが使用することができます:

    Android:layout_alignParentRight="true"
    Android:layout_centerVertical="true"
2
Pablo

これは目的を果たすべきです

Android:textAlignment="textStart"

2
masoud Cheragee

私の場合、私はemptyStringRelative Layoutを使用していました

1時間これに苦労した後。これだけが私のために働きました:

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

layout_toRightOfまたはlayout_toEndOfはどちらも機能しますが、サポートするために両方を使用しました。

より明確にするために、

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

enter image description here

これがエミュレータの出力です

enter image description here

レイアウト:

<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
Rohit Sharma
<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>

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

1
Alp Altunel

私はまた同じ問題に直面し、TextViewのlayout_widthがwrap_contentを持っていたので問題が起こっていると考えました。あなたはmatch_parentおよびAndroidとしてlayout_widthを持っている必要があります:gravity = "gravity"

1
Arup Saha

Android:gravity="center"TextViewに追加してみてください

0
TheGreenGoblen

私の場合はテキストで "layout_alignRight"属性を使いました。

Android:layout_alignRight="@+id/myComponentId"

右マージンを追加したい場合は、例えば "Layout_Margin Right"属性を "20dp"に設定してください。

Android:layout_marginRight="20dp"
0
Laurent