我试图纵向和横向地集中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>
同样,这个问题是如何使TextViews的内容居中,而不是如何在LinearLayout中居中TextViews。那么,我如何在TextViews中以两种方式集中内容?
答案 0 :(得分:14)
这是您的问题:
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>
答案 1 :(得分:2)
看起来android正在以文本的基线为中心,而不是文本本身。
这是一篇关于这个烦人问题的好文章:http://www.doubleencore.com/2013/10/shifty-baseline-alignment/
总之,如果可能,线性布局将尝试通过文本基线对齐子视图。有一个xml标志可以禁用此行为:android:baselineAligned
,您可以尝试将其设置为false
。
答案 2 :(得分:1)
您可以查看this post
Android视图组采用LayoutParams概念,类似于Swing Layout Manager使用的布局约束。 LayoutParams配置Android View Group布置其子视图的方式。在Android中,GUI可以使用Java代码或使用XML文件以编程方式构建。 XML元素的结构与您可以以编程方式构建的View对象的结构相似。 XML属性用于配置布局参数。
您可以将重力配置到布局中。