2011-12-20 53 views
7

如果我在一个水平的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中运行良好,他们修复了它。但是有没有办法让它与其他Views一样,如android 2.3上的EditText。

通过飘下来了我的意思是:

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

我不能重现这一点。高度差有多大?只有几个像素? – 2011-12-20 21:59:40

回答

0

在LinearLayout中,方向是 “横向”。含义元素并排放置。然而,你的EditText和Spinner都有android:layout_width =“fill_parent”。 所以你要并排放置你的EditText &微调的一面,但你也希望他们FILL_PARENT ...

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

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

我建议改变的EditText和微调框属性:

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

并添加到您的LinearLayout:

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

我试过了,发生同样的事情 – Mustafa 2011-12-20 20:54:53

+0

并在LinearLayout中添加了android:baselineAligned =“true”。如果这不解决它,我clueluess :) – Entreco 2011-12-20 21:06:09

+1

实际设置父linearlayout的baselineAligned =“false”只解决问题。 – 2012-09-19 07:23:15

0

添加机器人: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> 
1

您应该添加以下到您EDITTEXT:

android:layout_gravity="center_vertical" 
3

微调比的EditText小,这样的方式可以对齐它添加机器人:layout_height =“match_parent”来微调,并保持的LinearLayout和的EditText用wrap_content。

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

我之前遇到过同样的问题,我想和修改我的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即可解决您的问题。