Android: layout_alignParentBottom se ignora cuando se utiliza sin altura de diseño explícita como una fila en ListView
Cuando utilizo un RelativeLayout
con fill_parent
o wrap_content
como height y un elemento que especifica: android:layout_alignParentBottom="true"
se ignora y se alinea en la parte superior. Establecer la altura de RelativeLayout
a un valor explícito hace que funcione. ¿Alguna pista?
- Vista personalizada con diseño XML en Android
- Android: ¿Obtiene el área visible de una vista?
- Falta el puerto reenviado en el Visor de jerarquía: Uso de Android Studio
- Cargar recursos (diseño) desde otro apk dinámicamente
- Posición exacta de un botón dentro de un diseño
- Porcentaje de llenado de Android del diseño
- Diseño de cuadrícula de botones 2x2
- Archivos de diseño recién creados no agregados a R.java
- Android - Ellipsize con la vista alineada a la derecha
- Android: Cuando el teclado aparece, el diseño es invisible. ¿Cómo puedo solucionar esto?
- Soporte de diseño de cuadrícula en android API 10
- Los bordes de desvanecimiento de los íconos Android no funcionan
- ¿Debo usar la autenticación de usuario basada en la conexión en mi aplicación de Android?
Este parece ser un error en Android, consulte http://code.google.com/p/android/issues/detail?id=1394 .
Trabajé alrededor de él envolviendo mi RelativeLayout
en un FrameLayout
y poniendo mi visión alineada inferior como niños del FrameLayout
con android:layout_gravity="bottom"
. Esto le impide referenciarlo desde dentro de RelativeLayout
así que tendrá que trabajar alrededor de eso (por ejemplo usando márgenes).
Si alguien tiene una mejor solución, por favor comparta.
Cuando infle el diseño, utilice inflate(R.layout.whatever, parent, false)
, donde parent
es ListView
. Si no lo hace (por ejemplo, pasa null
para el padre), RelativeLayout
vuelve extraño en las filas de lista.
Mi hack para este error andriod:
ViewGroup.LayoutParams lp=(ViewGroup.LayoutParams)view.getLayoutParams(); lp.height=view.getContentHeight();//hack for android bug about ViewGroup.LayoutParams.WRAP_CONTENT and android:layout_alignParentBottom="true" on landscape orientation view.requestLayout(); act.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
Pude conseguir la alineación correcta especificando TextView problemático con:
android:id="@+id/must_be_bottom_left" android:layout_alignParentRight="true" android:layout_alignParentBottom="true" android:layout_below="@id/xxx"
Donde xxx
fue el id de un TextView
que tiene android:layout_below="@id/yyy"
Y yyy
es un TextView
que siempre está por encima de xxx
y must_be_bottom_left
.
El contenido de mis elementos de lista puede variar de modo que a veces el "xxx" TextView
es View.GONE
, pero incluso entonces el diseño funciona como se esperaba.
No sé lo frágil o meramente seredipídico que es este trabajo. Estoy usando Android 1.6 y no lo he probado para compatibilidad hacia adelante.