web-dev-qa-db-ja.com

Android-LinearLayoutの中央のテキストビュー

TextViewLinearLayoutにセンタリングしようとしていますが、水平方向にセンタリングしていますが、垂直方向にはセンタリングしていません。

以下は私のコードです

 <LinearLayout
        Android:orientation="vertical"
        Android:layout_width="320dp"
        Android:layout_height="50dp"
        Android:background="@drawable/rectblack"
        Android:layout_marginTop="10dp"
        Android:layout_gravity="center"
        Android:minWidth="25px"
        Android:minHeight="25px">
        <TextView
            Android:text="Explode a Vin"
            Android:gravity="center"
            Android:layout_width="fill_parent"
            Android:layout_height="wrap_content"
            Android:id="@+id/tvExVin" />
    </LinearLayout>

最後に、Linearlayoutの左側の垂直方向の中央に配置したいと思います。誰かがそれを行う方法を理解できれば、それは素晴らしいことです。

ありがとう!

17
user222786

重力とlayout_gravityが逆になっています。 「|」で区切られた重力属性に複数の値を設定できます。これを試して:

 <LinearLayout
        Android:orientation="vertical"
        Android:layout_width="320dp"
        Android:layout_height="50dp"
        Android:background="@drawable/rectblack"
        Android:layout_marginTop="10dp"
        Android:layout_gravity="center_horizontal"
        Android:gravity="center_vertical|left"
        Android:minWidth="25px"
        Android:minHeight="25px">
        <TextView
            Android:text="Explode a Vin"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:id="@+id/tvExVin" />
    </LinearLayout>

説明のため:

Android:layout_gravity="center_horizontal"は、LinearLayoutを親の水平方向の中央に配置します。

Android:gravity="center_vertical|left"は、TextView(およびその他の子)をLinearLayoutの垂直方向の中央に配置し、左に揃えます。

43
invertigo

gravityをに変更してみてください

Android:layout_gravity="center_vertical"

gravityを使用してコンテンツをView内に配置し、layout_gravityを使用してViewを親内に配置します。

しかし、「結局、Linearlayoutの左側の垂直方向の中央に配置したい」と混乱しています。しかし、それが聞こえる方法から、私の答えはあなたが望むものを与える必要があります。

また、非常に正当な理由がない限り、1人の子にLinearLayoutまたは親を使用する必要はありません。あなたが望むもののより良い説明やスクリーンショットを提供できるなら、私たちはより良い解決策を手伝うことができるかもしれません。

これにより、希望する効果が得られます

<LinearLayout
    Android:layout_width="320dp"       <!-- removed orientation (horizontal by default)  -->
    Android:layout_height="50dp"
    Android:background="@drawable/rectblack"
    Android:layout_marginTop="10dp"
    Android:layout_gravity="center"
    Android:minWidth="25px"
    Android:minHeight="25px">
    <TextView
        Android:text="Explode a Vin"
        Android:layout_gravity="center_vertical"       <!-- changed gravity here  -->
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"           <!-- change to wrap_content -->
        Android:id="@+id/tvExVin" />
</LinearLayout>
2
codeMagic
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:layout_gravity="center_horizontal|center_vertical"
    Android:gravity="center_vertical|center_horizontal"
    Android:orientation="vertical" >

    <TextView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="AppLock Demo"
        Android:textSize="30dp" />

</LinearLayout>
0
ashvin sapariya