TextViewのコンテキストを垂直方向と水平方向の中央に配置しようとしています。以下のスクリーンショットをご覧ください。
1-5
と100+ 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でコンテンツを双方向の中央に配置するにはどうすればよいですか?
これはあなたの問題です:
Android:layout_height="wrap_content"
TextView
はwrap_content
に設定されています。これは、垂直方向に配置するスペースがないことを意味します。これを修正するには、固定の行の高さを設定します。以下の例では、50dpを使用しました。ただし、任意に設定できます。
P.S --Android:gravity="center"
はcenter_vertical
とcenter_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>
Androidは、テキスト自体ではなく、テキストのベースラインを中央に配置しているようです。
この厄介な問題についての素敵なブログ投稿は次のとおりです。 http://www.doubleencore.com/2013/10/shifty-baseline-alignment/
要約すると、線形レイアウトは、可能であれば、子ビューをテキストベースラインで整列させようとします。この動作を無効にするxmlフラグがあります:Android:baselineAligned
、これはfalse
に設定してみることができます。
あなたはチェックすることができます この投稿
Androidビューグループは、Swingレイアウトマネージャーが使用するレイアウト制約に類似したLayoutParamsの概念を採用しています。LayoutParamsは、Androidビューグループのレイアウト方法を構成します。子ビューです。Androidでは、GUIはJavaコードを使用するか、XMLファイルを使用してプログラムで構築できます。XML要素の構造は、の構造と類似しています。プログラムで作成できるオブジェクトを表示します。XML属性は、レイアウトパラメータを構成するために使用されます。
また、重力をレイアウトに構成できます。