水平对齐时,旋转器会向下浮动

时间:2011-12-20 20:33:14

标签: android android-layout

如果我在水平LinearLayout或表格行中添加微调器,例如:

   <LinearLayout
        android:id="@+id/linearLayout3"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <EditText
            android:id="@+id/editText1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1" >
        </EditText>

        <Spinner
            android:id="@+id/spinner1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1" />
    </LinearLayout>

旋转器漂浮下来。它浮在Android 2.2,Android 2.3和Android 3.2上,但它在Android 4.0中运行良好,他们修复了它。但有没有办法让它与其他视图一致,如android 2.3上的EditText。

通过浮动我的意思是:

***********************
* if EditText is here *  ************************
***********************  * Spinner will be here *
                         ************************

7 个答案:

答案 0 :(得分:3)

旧帖子,但它可能会有所帮助:

将baselineAligned设置为true是不必要的,因为它是默认值(在此解释: http://developer.android.com/reference/android/widget/LinearLayout.html#attr_android:baselinealigned

我通过将高度硬编码到textview和spinner,并将baselineAligned设置为FALSE来修复它。

答案 1 :(得分:3)

Spinner小于EditText,因此可以将两者对齐以将android:layout_height =“match_parent”添加到Spinner,并使用wrap_content保留LinearLayout和EditText。

答案 2 :(得分:2)

之前我遇到了同样的麻烦,在尝试修改我的xml后我找到了答案,这是我的xml代码:

printMyMyGADT

只需将<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/linearlayout1" android:orientation="horizontal" android:gravity="bottom"> <android.support.design.widget.TextInputLayout android:id="@+id/text_input_layout" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="50"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/editText" android:textSize="20dp" android:hint="Duration" android:layout_gravity="left" android:gravity="center" /> </android.support.design.widget.TextInputLayout> <Spinner android:id="@+id/spinner" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="right" android:layout_weight="50" /> 的{​​{1}}设置为gravity即可解决您的问题。

答案 3 :(得分:1)

您应该将以下内容添加到您的editText:

android:layout_gravity="center_vertical"

答案 4 :(得分:0)

在线性布局中,方向是“水平”。意义元素并排放置。然而,你的EditText和Spinner都有android:layout_width =“fill_parent”。 所以你想放置你的EditText&amp; Spinner并排,但你也想要它们fill_parent ......

如果你遇到这些矛盾的情况,你会怎么做?

显然,这是一个矛盾,不同版本的android为这些属性赋予了不同的优先级。

我建议将EditText和Spinner属性更改为:

<EditText
    ...
    android:layout_width="0dp"
    ... />
<Spinner
    ...
    android:layout_width="0dp"
    ... />

并将其添加到您的LinearLayout:

<LinearLayout
    android:baselineAligned="true"
    ... />

答案 5 :(得分:0)

将android:baselineAligned =“false”添加到LinearLayout以查看algn视图。 这适用于我的项目:

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:baselineAligned="false"
    android:orientation="horizontal" >

    <EditText
        android:id="@+id/text"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1" />

    <Spinner
        android:id="@+id/spinner"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1" />
</LinearLayout>

答案 6 :(得分:0)

我找到了以下解决方案:

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"/>            
    <Spinner
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>
</LinearLayout>