水平alignment时,微调器浮起来

如果我在水平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等其他视图alignment。

我的意思是:

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

Solutions Collecting From Web of "水平alignment时,微调器浮起来"

旧post,但它可能有所帮助:

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

我已经通过硬编码textview和微调高度,并将baselineAligned设置为FALSE来修复它。

微调器比EditText小,所以一个方法来alignment它是为了添加android:layout_height =“match_parent”到微调,并保持LinearLayout和EditText与wrap_content。

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

 android:layout_gravity="center_vertical" 

我面临同样的麻烦之前,我想出了尝试和修改我的XML后的答案,这里是我的XML代码:

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

只需将您的LinearLayoutgravity设置为bottom ,将解决您的问题。

在线性布局中,方向是“水平的”。 意义元素并排放置。 您的EditText和微调,但是,都有android:layout_width =“fill_parent”。 所以你想要放置你的EditText和微调并排,但你也希望他们fill_parent …

如果你给了这些矛盾的条件,你会怎么做?

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

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

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

并将其添加到您的LinearLayout:

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

将android:baselineAligned =“false”添加到LinearLayout以标记视图。 这在我的项目中工作:

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

我发现了以下解决scheme:

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