2015-10-17 84 views
0

我的Android項目中有一個RelativeLayout,它顯示爲一個簡單的自定義對話框。我在頂部有一個標題,中間有一些文字,底部有一個按鈕。我所要做的只是將標題的底部頂部的按鈕之間的文字居中。在兩個現有元素之間垂直居中TextView

當它居中時,TextView頂部和標題底部之間的距離應該與TextView底部和按鈕頂部之間的距離相同。

爲了達到這個目的,我在相對佈局中放置了一個框架佈局,並將它放在「按鈕上方」和「標題下方」。

我得到的是這樣的:

enter image description here

這就是我想要達到的目標:

enter image description here

這裏是我的XML(注意,我設置主文TextView programaticaly)。

<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> 

回答

1

這可能是一個可能的解決方案到你的問題。

<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:標題TextView的
  • 淺藍色100:居中的TextView相對佈局

Result

+0

感謝@eldivino,我動都沒動嵌入式佈局上面的按鈕代碼,因爲它給我一個錯誤。然而,它確實工作,它導致我找出問題(因爲我是一行一行比較你的代碼),這是我的一個愚蠢的錯誤 - 我有一個50dp填充添加到我的文本視圖的頂部(android:paddingTop =「50dp」),我從原始代碼中刪除了它,它完美地工作。謝謝! – Zippy

0

沒有去嘗試的機會,但這樣的事情應該工作:

<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> 
0

試試這個

<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>