2011-12-20 14 views
7

Si añado spinner en un LinearLayout horizontal o en una fila de la tabla, por ejemplo, así:Spinner flota hacia abajo cuando horizontal alineado

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

El spinner flota hacia abajo. Flota hacia abajo en Android 2.2, Android 2.3 y Android 3.2 pero funciona bien en Android 4.0 lo arreglaron. Pero hay forma de alinearlo con las otras Vistas como EditText en android 2.3.

Por flota hacia abajo que quiero decir:

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

No puedo reproducir esto.¿Qué tan grande es la diferencia de altura? ¿Solo unos pocos píxeles? –

Respuesta

0

En el LinearLayout, la orientación es "horizontal". Los elementos del significado se colocan uno al lado del otro. Sin embargo, EditText y Spinner tienen android: layout_width = "fill_parent". Así que desea colocar su lado EditarTexto & Spinner al lado del otro, pero también quiere que fill_parent ...

¿Qué haría usted si cuando se dan estas condiciones contradictorias ??

Obviamente, esto es una contradicción, y las diferentes versiones de Android dan diferentes prioridades a estos atributos.

Yo sugeriría cambiar el EditarTexto y Spinner atribuye a:

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

y añadir a su LinearLayout:

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

Intenté esto, sucede lo mismo – Mustafa

+0

y agrego android: baselineAligned = "true" en su LinearLayout. Si eso no lo soluciona, estoy clueluess :) – Entreco

+1

realmente estableciendo lineeline de baselayout baselineAligned = "false" solo resuelve el problema. –

0

Añadir androide: baselineAligned = "false" para LinearLayout a ALGN vistas . Esto funciona en mi proyecto:

<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

Usted debe agregar lo siguiente a su EDITTEXT:

android:layout_gravity="center_vertical" 
3

Spinner es menor que EditarTexto, por lo que una forma de alinear tanto es añadir androide: layout_height = "match_parent" a Spinner, y tener LinearLayout y EditarTexto con wrap_content.

0

me encontré con la siguiente solución:

<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

que enfrentan el mismo problema antes y me di cuenta de la respuesta después de probar y modificar mi xml, aquí es mi código 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" 
    /> 

Simplemente configure gravity de su LinearLayout en bottom y le resolverá su problema.

Cuestiones relacionadas