如何使具有不同字体大小的两个TextView居中显示

3
<LinearLayout
    android:id="@+id/layout_information"
    android:layout_width="0dp"
    android:layout_height="fill_parent"
    android:layout_weight="0.17"
    android:gravity="center"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/text_view_destination"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="\@ Home in"
        android:textColor="@color/solid_white"
        android:textSize="19sp"
        android:textStyle="bold" 
        android:layout_gravity="bottom"
        />

    <TextView
        android:id="@+id/text_view_time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="30dp"
        android:textColor="@color/solid_white"
        android:textSize="25sp"
        android:textStyle="normal" 
        android:layout_gravity="bottom"
        />
</LinearLayout> 

我想要将这两个TextView在垂直方向上居中,但我希望它们底部对齐并排成一行。现在它们虽然底部对齐,但是在它们父布局的底部。有什么办法可以实现吗?我考虑将它们当前的布局父元素(“parent1”)包装在另一个布局(“parent2”)中,并使“parent1”处于“parent2”的中心位置。还有其他方法可以不添加元素实现吗?
2个回答

5
如果您的问题是两个视图都位于其父级底部,您可以使用此方法。这两个视图仍然对齐在同一个底部,并且居中于屏幕上。
您的布局看起来像是更大的XML的一部分(weight = 0.17),因此我已经在layout_width上使用了fill_parent。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_information"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="0.17"
android:gravity="center"
android:orientation="horizontal" >

    <TextView
    android:id="@+id/text_view_destination"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:text="\@ Home in"
    android:textColor="@color/solid_white"
    android:textSize="19sp"
    android:textStyle="bold" />

    <TextView
    android:id="@+id/text_view_time"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"        
    android:layout_marginLeft="30dp"
    android:text="\@ Home in"
    android:textColor="@color/solid_white"
    android:textSize="25sp"
    android:textStyle="normal"
    android:layout_alignParentBottom="true"
    android:layout_toRightOf="@id/text_view_destination"
    android:layout_alignBaseline="@id/text_view_destination" />

</RelativeLayout>

1
第二个 android:layout_alignParentBottom="true" 是多余的,对吧? - Elad Benda
使用RelativeLayout,您可以在其子视图上使用一些属性,使您能够将其定位在需要的位置。layout_alignParentBottom类似于“将此视图与其父视图对齐到底部区域”,因此如果父视图是正方形,则会进入底部区域,android:layout_alignParentLeft“将此视图与其父视图对齐到左侧区域”,等等。 - AlexBcn
但我不想让文本位于其父级底部区域。相反,这就是我今天拥有的,我想要改变。那么你为什么要放这个?无论如何,我看到另一个结果:两个文本都在中间,并且具有相同的基线。 - Elad Benda
第二个 android:layout_alignParentBottom="true" 是冗余的,对吗? - Elad Benda
@EladBenda 你说得对,这是一篇旧文章,但我进行了编辑以进行更正。 - user1732313

0

试试这个方法

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout_information"
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:gravity="center_vertical|bottom"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/text_view_destination"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center"
        android:text="HOme in"
        android:textColor="@color/solid_white"
        android:textSize="19sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/text_view_time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center"
        android:textColor="@color/solid_white"
        android:textSize="25sp"
        android:text="Home out"
        android:textStyle="normal" />

</LinearLayout>

为什么我们需要 android:layout_weight="1" - Elad Benda
android:gravity="center_vertical|bottom" 没有意义。 - NikkyD

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接