在 2 个现有元素之间垂直居中 TextView

Vertically centre TextView between 2 existing elements

我的 Android 项目中有一个 RelativeLayout 显示到一个简单的自定义对话框。我在顶部有一个标题,中间有一些文本,底部有一个按钮。我想要做的就是将文本居中置于标题 底部 和按钮 顶部 .

之间

当它居中时,TextView 顶部和标题底部之间的距离应该与 TextView 底部和按钮顶部之间的距离相同。

为此,我在我的相对布局中放置了一个框架布局,并将其放置在 'above the button' 和'标题下方。

我得到的是这样的:

这就是我想要实现的:

这是我的 XML(请注意,我以编程方式设置主 TextView 的文本)。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true"
    android:gravity="fill"
    android:background="#FFFFFF">

    <TextView
        android:id="@+id/title"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Title"
        android:layout_marginTop="10dp"
        android:textColor="#000000"
        android:gravity="center"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:textSize="40dp">        
    </TextView>   

    <Button
        android:id="@+id/button"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_gravity="bottom"
        android:layout_marginBottom="10dp"
        android:layout_alignParentBottom="true"
        android:textSize="25dp"
        android:text="Click Me"        
        android:background="@drawable/buttonbk"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"        
        android:textStyle="bold">
    </Button>

    <FrameLayout
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_above="@+id/button"
        android:layout_below="@id/title" >

        <TextView
            android:id="@+id/text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:gravity="center_vertical|center_horizontal"
            android:paddingTop="50dp"
            android:paddingLeft="18dp"
            android:paddingRight="18dp"
            android:layout_gravity="center"
            android:textSize="30dp" 
            android:textColor="#000000">        
        </TextView>       

    </FrameLayout>

</RelativeLayout>

没有机会尝试,但像这样的东西应该有用:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF"
android:fillViewport="true"
android:gravity="fill">

<TextView
    android:id="@+id/title"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dp"
    android:gravity="center"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:text="Title"
    android:textColor="#000000"
    android:textSize="40dp"></TextView>

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@id/text"
    android:layout_below="@id/title"
    android:background="#FFFFFF">

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_marginTop="5dp"
        android:paddingLeft="18dp"
        android:paddingRight="18dp"
        android:paddingTop="50dp"
        android:textColor="#000000"
        android:textSize="30dp"></TextView>
</RelativeLayout>

<Button
    android:id="@+id/button"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_gravity="bottom"
    android:layout_marginBottom="10dp"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:background="@drawable/buttonbk"
    android:text="Click Me"
    android:textSize="25dp"
    android:textStyle="bold"></Button>
</RelativeLayout>

试试这个

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true"
android:gravity="fill"
android:background="#FFFFFF">

<TextView
    android:id="@+id/title"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Title"
    android:layout_marginTop="10dp"
    android:textColor="#000000"
    android:gravity="center"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:textSize="40dp">        
</TextView>   

<Button
    android:id="@+id/button"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_gravity="bottom"
    android:layout_marginBottom="10dp"
    android:layout_alignParentBottom="true"
    android:textSize="25dp"
    android:text="Click Me"        
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"        
    android:textStyle="bold">
</Button>

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:layout_above="@+id/button"
    android:layout_below="@id/title" >

    <TextView
        android:id="@+id/text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:gravity="center"
        android:paddingLeft="18dp"
        android:paddingRight="18dp"
        android:layout_gravity="center"
        android:textSize="30dp" 
        android:text="Hi Im textView"
        android:textColor="#000000">        
    </TextView>       

</FrameLayout>

这可能是您问题的可能解决方案。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white" >

    <TextView
        android:id="@+id/title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:gravity="center"
        android:background="@color/light_blue400"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:text="Title"
        android:textColor="@color/black"
        android:textSize="40dp" />

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@id/button"
        android:layout_below="@id/title"
        android:background="@color/light_blue100" >

        <TextView
            android:id="@+id/text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:paddingLeft="18dp"
            android:paddingRight="18dp"
            android:text="Text centered vertically"
            android:textColor="@color/black"
            android:textSize="30dp" />

    </RelativeLayout>

    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_gravity="bottom"
        android:layout_marginBottom="10dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:text="Click Me"
        android:textSize="25dp"
        android:textStyle="bold" />

</RelativeLayout>

这是结果(我对背景进行了着色以显示不同的区域)。

  • 白色:主要相对布局
  • 淡蓝色 400: Title TextView
  • 淡蓝色 100:居中 TextView 的相对布局