将layout_alignBaseline与Spinner一起使用

时间:2010-05-04 08:21:40

标签: android layout

我注意到TextVew控件的layout_alignBaseline不适用于Spinner控件。 我正在尝试将文本放在微调器的左侧,但它会转到父控件的顶部。

<Spinner  
android:id="@+id/locations"  
android:layout_width="fill_parent"  
android:layout_height="wrap_content"  
android:layout_below="@id/userCode"  
android:layout_alignLeft="@id/userCode"  
android:layout_marginTop="15dip"
    />

<TextView  
android:id="@+id/locationsLbl"  
        android:layout_width="wrap_content"   
        android:layout_height="wrap_content"  
        android:text="Region"  
        android:layout_alignBaseline="@id/locations"  
    />  

这是一个错误还是我做错了什么?使用EditText控件时,相同的技术可以正常工作。

3 个答案:

答案 0 :(得分:6)

我也面临同样的问题,但发现了以下解决方法

<Spinner  
    android:id="@+id/locations"  
    android:layout_width="fill_parent"  
    android:layout_height="wrap_content"  
    android:layout_below="@id/userCode"  
    android:layout_alignLeft="@id/userCode"  
    android:layout_marginTop="15dip"/>

<TextView  
    android:id="@+id/locationsLbl"  
    android:layout_width="wrap_content"   
    android:layout_height="wrap_content"  
    android:text="Region"  
    android:layout_alignTop="@+id/locations"
    android:layout_alignBottom="@+id/locations"
    android:gravity="center_vertical"/>

答案 1 :(得分:1)

较新版本的Android支持Spinners的基线对齐。 Spinner将创建列表的第一个视图并使用其基线对齐。

如果这不起作用,请确保您的微调器适配器创建一个支持基线对齐的视图。 (getBaseline()!= -1)。对于LinearLayouts,您可以使用baselineAlignedChildIndex属性指定要使用的线性布局中的子项。

答案 2 :(得分:0)

android:layout_toLeftOf="@id/locations"