【问题标题】:Baseline alignment in RelativeLayout does not work for RadioGroupRelativeLayout 中的基线对齐不适用于 RadioGroup
【发布时间】:2015-11-25 13:16:44
【问题描述】:

我有一个带有标签和 RadioGroup 的 RelativeLayout,我希望标签的基线和 RadioGroup 的 RadioButton 子项对齐。我的代码是:

<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 的顶部与标签的基线对齐,如下所示:

如何获得我想要的行为?我绝对不想要任何硬编码的边距或中心对齐,我想对齐基线。

似乎 View.getBaseline 应该报告基线相对于视图顶部的位置,如果该方法为 RadioGroup 返回 0,则可以解释我看到的行为。事实上,RadioGroup 及其基类 LinearLayout 似乎都没有定义该方法。但也许,我忽略了一些东西。

【问题讨论】:

    标签: android


    【解决方案1】:

    我也遇到了同样的问题。事实证明,您只需要添加两个属性。考虑第一个版本。它不起作用:

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

    结果与问题中的屏幕截图非常相似。

    现在,请输入以下几行...

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

    ...在&lt;RadioGroup /&gt;标签内。

    现在,它看起来像这样:

    整齐的基线对齐...

    【讨论】:

      猜你喜欢
      • 2015-03-03
      • 1970-01-01
      • 2011-09-13
      • 1970-01-01
      • 2016-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多