web-dev-qa-db-ja.com

TextViewのコンテンツを垂直方向と水平方向に中央揃え-LinearLayout

TextViewのコンテキストを垂直方向と水平方向の中央に配置しようとしています。以下のスクリーンショットをご覧ください。

enter image description here

1-5100+ Pointsを示すTextViewは、垂直方向と水平方向の中央に配置したいものです。ご覧のとおり、これらは水平方向の中央にありますが、垂直方向にはありません。以下は私が使用しているコードです。

    <LinearLayout
        Android:id="@+id/linearlayout2"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:orientation="vertical" >

        <LinearLayout
            Android:layout_width="fill_parent"   
            Android:layout_height="wrap_content"
            Android:orientation="horizontal" >

            <TextView 
                Android:id="@+id/l1"
                Android:layout_width="0dp"
                Android:layout_height="wrap_content"
                Android:layout_weight="2"
                Android:paddingTop="5dp"
                Android:paddingLeft="5dp"
                Android:paddingRight="5dp"
                Android:paddingBottom="5dp"
                Android:textSize="12sp"
                Android:gravity="center_vertical|center_horizontal" /> 

            <TextView 
                Android:id="@+id/g1"
                Android:layout_width="0dp"
                Android:layout_height="wrap_content"
                Android:layout_weight="4"
                Android:paddingTop="5dp"
                Android:paddingLeft="5dp"
                Android:paddingRight="5dp"
                Android:paddingBottom="5dp"
                Android:textSize="12sp"
                Android:gravity="center_vertical|center_horizontal" /> 

            <TextView 
                Android:id="@+id/c1"
                Android:layout_width="0dp"
                Android:layout_height="wrap_content"
                Android:layout_weight="4"
                Android:paddingTop="5dp"
                Android:paddingLeft="5dp"
                Android:paddingRight="5dp"
                Android:paddingBottom="5dp"
                Android:textSize="12sp"
                Android:gravity="center_vertical|center_horizontal" />
        </LinearLayout>

繰り返しますが、この質問はTextViewのコンテンツを中央に配置する方法であり、LinearLayoutでTextViewを中央に配置する方法ではありません。では、TextViewでコンテンツを双方向の中央に配置するにはどうすればよいですか?

10
Matt

これはあなたの問題です:

Android:layout_height="wrap_content"

TextViewwrap_contentに設定されています。これは、垂直方向に配置するスペースがないことを意味します。これを修正するには、固定の行の高さを設定します。以下の例では、50dpを使用しました。ただし、任意に設定できます。

P.S --Android:gravity="center"center_verticalcenter_horizontalの両方を処理します。

このコードを投入してチェックアウトしてください!

<LinearLayout
    Android:id="@+id/linearlayout2"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:orientation="vertical" >

    <LinearLayout
        Android:layout_width="fill_parent"   
        Android:layout_height="50dp"
        Android:orientation="horizontal" >

        <TextView 
            Android:id="@+id/l1"
            Android:layout_width="0dp"
            Android:layout_height="match_parent"
            Android:layout_weight="2"
            Android:paddingTop="5dp"
            Android:paddingLeft="5dp"
            Android:paddingRight="5dp"
            Android:paddingBottom="5dp"
            Android:textSize="12sp"
            Android:gravity="center" /> 

        <TextView 
            Android:id="@+id/g1"
            Android:layout_width="0dp"
            Android:layout_height="match_parent"
            Android:layout_weight="4"
            Android:paddingTop="5dp"
            Android:paddingLeft="5dp"
            Android:paddingRight="5dp"
            Android:paddingBottom="5dp"
            Android:textSize="12sp"
            Android:gravity="center" /> 

        <TextView 
            Android:id="@+id/c1"
            Android:layout_width="0dp"
            Android:layout_height="match_parent"
            Android:layout_weight="4"
            Android:paddingTop="5dp"
            Android:paddingLeft="5dp"
            Android:paddingRight="5dp"
            Android:paddingBottom="5dp"
            Android:textSize="12sp"
            Android:gravity="center" />
    </LinearLayout>
14
Evan Bashir

Androidは、テキスト自体ではなく、テキストのベースラインを中央に配置しているようです。

この厄介な問題についての素敵なブログ投稿は次のとおりです。 http://www.doubleencore.com/2013/10/shifty-baseline-alignment/

要約すると、線形レイアウトは、可能であれば、子ビューをテキストベースラインで整列させようとします。この動作を無効にするxmlフラグがあります:Android:baselineAligned、これはfalseに設定してみることができます。

2
Collin Flynn

あなたはチェックすることができます この投稿

Androidビューグループは、Swingレイアウトマネージャーが使用するレイアウト制約に類似したLayoutParamsの概念を採用しています。LayoutParamsは、Androidビューグループのレイアウト方法を構成します。子ビューです。Androidでは、GUIはJavaコードを使用するか、XMLファイルを使用してプログラムで構築できます。XML要素の構造は、の構造と類似しています。プログラムで作成できるオブジェクトを表示します。XML属性は、レイアウトパラメータを構成するために使用されます。

また、重力をレイアウトに構成できます。

1
MrMins