2015-11-25 50 views
1

我有一個帶有標籤和RadioGroup的RelativeLayout,我希望RadioGroup的標籤和RadioButton子對象的基線對齊。我的代碼是:RelativeLayout中的基線對齊無法用於RadioGroup

<TextView android:id="@+id/hi" 
    android:layout_width="wrap_content" android:layout_height="wrap_content" 
    android:text="Hi" 
    android:textAppearance="@style/TextAppearance.AppCompat.Display2" 
    /> 

<RadioGroup 
    android:layout_width="wrap_content" android:layout_height="wrap_content" 
    android:layout_toRightOf="@id/hi" 
    android:layout_alignBaseline="@id/hi"> 
    <RadioButton 
     android:layout_width="wrap_content" android:layout_height="wrap_content" 
     android:text="There"/> 
</RadioGroup> 

我得到什麼,而是在於RadioGroup中的頂部對齊到標籤的基線,像這樣:

enter image description here

如何獲得行爲我想要?我絕對不希望任何硬編碼頁邊距或中心對齊,我想調整基線。

看來,View.getBaseline應該報告相對於視圖頂部的基線位置,如果該方法返回0 RadioGroup,我可以解釋我看到的行爲。事實上,RadioGroup及其基類LinearLayout都不會定義該方法。但也許,我忽略了一些東西。

回答

0

我正面臨同樣的問題。事實證明,你只需要添加兩個屬性。考慮第一個版本。這是行不通的:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.thomaskuenneth.temperatureconverter.MainActivity"> 

    <EditText 
     android:id="@+id/input" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentTop="true" 
     android:ems="5" 
     android:inputType="numberDecimal" 
     android:text="42.0" /> 

    <RadioGroup 
     android:id="@+id/tempSrc" 
     android:layout_alignBaseline="@id/input" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentEnd="true" 
     android:layout_toEndOf="@id/input" 
     android:orientation="horizontal"> 

     <RadioButton 
      android:id="@+id/srcCelsius" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="°C" /> 

     <RadioButton 
      android:id="@+id/srcFahrenheit" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="°F" /> 

     <RadioButton 
      android:id="@+id/srcKelvin" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="K" /> 

    </RadioGroup> 

</RelativeLayout> 

結果非常類似於在問題的屏幕截圖。

RadioButtons are not baseline-aligned

現在,請把下面的行...

android:baselineAlignedChildIndex="0" 
    android:baselineAligned="true" 

...的<RadioGroup />標籤內。現在

,它看起來就像這樣:

enter image description here

整齊的基線對齊...