El hilador flota hacia abajo cuando está alineado horizontalmente
Si agrego el hilador en un LinearLayout horizontal o en una fila de la tabla por ejemplo como esto:
<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>
La ruleta flota hacia abajo. Flota abajo en Android 2.2, android 2.3 y android 3.2, pero funciona bien en android 4.0 lo arreglaron. Pero hay manera de hacerlo alinear con las otras vistas como el EditText en android 2.3.
- ¿Es posible habilitar la opción de revelador "Mostrar límites de diseño" mediante programación?
- Determinar la vista que aparece en LayoutManager pre-layout
- ScrollView desplazamientos automáticos para seleccionar TextView
- Nueva interfaz de la tarjeta Google Now y Google+
- Selector de textColor de Android
Por flota abajo quiero decir:
*********************** * if EditText is here * ************************ *********************** * Spinner will be here * ************************
- Entender los BaseAdapters y cómo usarlos
- Disposición específica del idioma para android
- Necesita utilizar un tema Theme.AppCompat (o descendente) con esta actividad
- AutoCompleteTextView quitar / cambiar el divisor de color
- Android: Compartir hermano Vistas estado presionado
- RecyclerView: Inconsistencia detectada. Posición de artículo no válida
- No se pudieron encontrar las clases siguientes: android.support.v7.internal.app.WindowDecorActionBar
- ConstraintLayout no me permite establecer una restricción que conecte una vista al borde de la pantalla
Old post, pero puede ayudar:
Establecer baselineAligned en true no es necesario ya que es su valor predeterminado (explica aquí: http://developer.android.com/reference/android/widget/LinearLayout.html#attr_android:baselinealigned )
Lo he arreglado por hardcoding una altura tanto a textview y spinner, y la configuración baselineAligned a FALSE.
Spinner es más pequeño que EditText, así que una manera de alinear ambos es añadir android: layout_height = "match_parent" a Spinner, y mantener LinearLayout y EditText con wrap_content.
Debería agregar lo siguiente a su editText:
android:layout_gravity="center_vertical"
Me enfrenté al mismo problema antes y me di cuenta de la respuesta después de intentar y modificar mi xml, aquí está 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 establezca la gravity
de su LinearLayout
en la bottom
y resolverá su problema.
En la representación lineal, la orientación es "horizontal". Los elementos de significado se colocan uno al lado del otro. Su EditText y Spinner sin embargo, ambos tienen android: layout_width = "fill_parent". Por lo tanto, desea colocar su EditText & Spinner lado a lado, pero también desea que fill_parent …
¿Qué harías si te dieran 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 los atributos EditText y Spinner a:
<EditText ... android:layout_width="0dp" ... /> <Spinner ... android:layout_width="0dp" ... />
Y añada esto a su LinearLayout:
<LinearLayout android:baselineAligned="true" ... />
Añadir android: baselineAligned = "false" a LinearLayout para crear 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>
He encontrado 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>
- Android Facebook inicio de sesión único – múltiples hashes clave posible?
- Uso de SurfaceTexture llenado por la previsualización de la cámara como entrada de Renderscript Asignación en Jelly Bean