私のアプリケーションにはTextView
があります。その中のテキストを右に揃えます。私は追加してみました:
Android:gravity="right"
しかし、これは私にとってはうまくいきません。
何が悪いのでしょうか。
私はあなたがこれをやっていると思います:Android:layout_width = "wrap_content"
これが事実である場合、これをして下さい:Android:layout_width = "match_parent"
一般に、Android:gravity="right"
はAndroid:layout_gravity="right"
とは異なります。
最初のものはビュー内のテキスト自体の位置に影響するため、テキストを右揃えにする場合は、layout_width=
は"fill_parent"
または"match_parent"
のいずれかにする必要があります。
2番目のものは、その親内でのビューの位置、つまり親ビュー内でのオブジェクト自体の編集(編集ボックスまたはテキストビュー)に影響します。
より良い解決策は、最も単純な方法と、コードの動作をほとんど変更しない方法です。
あなたがTextView
の2つのプロパティだけでこの問題を解決することができるならば?
LinearLayout
子の動作を変更する可能性があるLinearLayout
プロパティを変更する必要はありませんか。
この方法を使用すると、LinearLayout
のプロパティと動作を変更する必要はなく、次の2つのプロパティをターゲットのTextView
に追加するだけで済みます。
Android:gravity="right"
Android:textAlignment="gravity"
将来的に別の問題を引き起こす可能性があるのではなく、ターゲットの父親を変更するのではなく、ターゲットのみを変更してソリューションを解決するほうがよいでしょうか。それについて考える:)
Android:layout_gravity
は、テキストビューを親レイアウトに対して揃えるために使用されます。 Android:gravity
は、テキストビュー内でテキストを揃えるために使用されます。
テキストビュー内のテキストを右に揃えようとしていますか。それとも、テキストレイアウト自体を親レイアウトに対して右に移動しますか。それとも両方を達成しようとしていますか。
次のコードスニペット:
Android:textAlignment="textEnd"
Android:layout_gravity="end"
私にとって素晴らしい作品
誰かがまだ必要としている場合
Android:gravity="end"
Android:layout_width="wrap_content"
を使用していないことを確認してください。その場合、テキストを揃えるための十分なスペースがないため、重力を設定できません。代わりにAndroid:layout_width="fill_parent"
を使用してください
Android:gravity="right"
これは基本的にはリニアレイアウトで使われるので、TextViewまたはEditTextの幅を
Android:layout_width = "match_parent"
そして
相対レイアウトで作業している場合は、
Android:layout_alignParentRight="true"
RelativeLayout
にある場合は、Android:layout_toRightOf="@id/<id_of_desired_item>"
を使用できます。
または
デバイスのright
コーナーに合わせたい場合は、Android:layout_alignParentRight="true"
という場所にします。
(LinearLayout)Android:layout_width="match_parent"
とTextViewのAndroid:layout_gravity="right"
を作ります。
多くの開発者がそれを知っているので、WEBを使って重力の概念を説明しましょう。
Android_layout_gravity
はfloat:left|right|top|bottom
の動作
Android_gravity
はtext_align:centre|left|right
として機能します
AndroidではfloatはAndroid_layout_gravityでtext_align:はAndroid_gravityです。
そしてAndroid_layout_gravityは親に対して相対的に適用されます。 Android_gravityがその子コンテンツまたは内部コンテンツに適用される場合
注Android_gravityは、Viewがmatch_parentの場合(中央に余白がある場合)にのみ機能します。
以下は私のために働く:
<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_alignParentEnd
とAndroid:textAlignment
設定に注意してください。
あなたが使用することができます:
Android:layout_alignParentRight="true"
Android:layout_centerVertical="true"
これは目的を果たすべきです
Android:textAlignment="textStart"
私の場合、私はemptyString
にRelative Layout
を使用していました
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" />
次のことに注意してください。
Android:layout_width="wrap_content"
は動作しますGravity
は使用されていません<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>
ナンバーワンを水平方向と垂直方向の中央に揃えます。
私はまた同じ問題に直面し、TextViewのlayout_widthがwrap_contentを持っていたので問題が起こっていると考えました。あなたはmatch_parentおよびAndroidとしてlayout_widthを持っている必要があります:gravity = "gravity"
Android:gravity="center"
をTextView
に追加してみてください
私の場合はテキストで "layout_alignRight"属性を使いました。
Android:layout_alignRight="@+id/myComponentId"
右マージンを追加したい場合は、例えば "Layout_Margin Right"属性を "20dp"に設定してください。
Android:layout_marginRight="20dp"