TextView的中心内容垂直和放大水平 - LinearLayout

时间:2013-11-18 19:12:53

标签: android android-layout textview android-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>

同样,这个问题是如何使TextViews的内容居中,而不是如何在LinearLayout中居中TextViews。那么,我如何在TextViews中以两种方式集中内容?

3 个答案:

答案 0 :(得分:14)

这是您的问题:

android:layout_height="wrap_content"

您的TextView设置为wrap_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>

答案 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属性用于配置布局参数。

您可以将重力配置到布局中。