2011-12-20 52 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即可解決您的問題。