webdevqa.jp.net

Android-LinearLayoutでTextViewを水平方向に中央揃え

私は次の基本的なレイアウトを持っています

<LinearLayout
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:orientation="vertical"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent">

<LinearLayout
    Android:orientation="horizontal"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:background="@drawable/title_bar_background">

    <TextView
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:layout_gravity="center_horizontal"
        Android:textAppearance="?android:attr/textAppearanceLarge"
        Android:padding="10dp"
        Android:text="HELLO WORLD" />

    </LinearLayout>
<LinearLayout>

Xmlは正しいようですが、テキストは左に揃えられています。テキストビューは親の幅全体を占め、テキストビューは中央に設定されます。問題がわからない...

103
Jake Wilson

何が起こっているのかというと、TextViewは内部のLinearLayoutのwhole幅を埋めているため、すでにlayoutの水平方向の中心にあります。 Android:layout_gravityを使用すると、指定された重力にウィジェット全体が配置されます。ウィジェット全体を真ん中に配置する代わりに、実際にやろうとしていることは、Android:gravity="center_horizontal"で達成できるcontentを中央に配置し、Android:layout_gravity属性を削除できる。

215
Dan S
<LinearLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:orientation="vertical"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent">

<LinearLayout
Android:orientation="horizontal"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:background="@drawable/title_bar_background">

<TextView
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:gravity="center"
    Android:textAppearance="?android:attr/textAppearanceLarge"
    Android:padding="10dp"
    Android:text="HELLO WORLD" />

</LinearLayout>
22
JoeLallouz

<TextView>の中央に<Linearlayout>を設定した場合、最初にAndroid:layout_width="fill_parent"を必須に設定します
他の重力を使用する必要はありません

    <LinearLayout
            Android:layout_toRightOf="@+id/linear_profile" 
            Android:layout_height="wrap_content"
            Android:layout_width="fill_parent"
            Android:orientation="vertical"
            Android:gravity="center_horizontal">
            <TextView 
                Android:layout_height="wrap_content"
                Android:layout_width="wrap_content"
                Android:text="It's.hhhhhhhh...."
                Android:textColor="@color/Black"

                />
    </LinearLayout>
20
patel135

Android:gravity="center"の代わりにTextViewlayout_gravityを使用します。

16
Blackbelt

次を使用します:Android:layout_centerHorizo​​ntal = "true"

テキストビュー全体を中央に配置します

1
charlenecipres