Problema relativo de layout_centerInParent y layout_below

Tengo un problema al diseñar un diseño relativo. Aquí está el código de prueba

<RelativeLayout
    android:background="@drawable/bg_controls"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

    <LinearLayout
        android:id="@+id/controls_layout"
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:gravity="center">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/controls_layout" />

</RelativeLayout>

El resultado de eso es enter image description here

Si elimino android: layout_centerInParent = "true", todo funciona bien. ¿Por qué RelativeLayout no puede hacer eso de otra manera?

UPD: el resultado esperado es que aparezca un segundo botón debajo del LinearLayout.

preguntado el 16 de mayo de 11 a las 19:05

¿Qué es exactamente lo que intenta hacer? -

el resultado deseado es que aparece un segundo botón debajo de LinearLayout. Pensé que era obvio... -

por debajo del diseño lineal, ¿quiere decir debajo del diseño lineal? -

¿Puede ser un poco más específico con respecto a la imagen en sí en lugar de los diseños? -

RelativeLayout se comporta correctamente en este caso y debe agregar el parámetro layout_below para obtener el resultado deseado para el botón 2 -

4 Respuestas

Estaba teniendo un problema muy similar, donde tenía un centro View que fue designado layout_centerInParent, y todas mis otras opiniones eran relativas a eso, pero algunas de las ViewLos mensajes de correo electrónico no se mostraban correctamente en el editor o en el dispositivo.

Encontré que mi centrado View sí mismo, designado layout_centerInParent, todavía tenía que ser relativo a otra cosa (por poco intuitivo que parezca). Así que lo hice layout_below algo que estaba encima de eso, a pesar de que eso View encima no estaba alineado con nada excepto ser layout_top de lo mismo a continuación. Pero una vez que hice esto, toda la interfaz de usuario encajó en su lugar :)

Respondido el 06 de Septiembre de 14 a las 10:09

Sucede cuando el diseño relativo tiene una altura wrap_content. Si puede dar una altura fija al diseño relativo, el elemento layout_below centerInParent funciona bien. De lo contrario, el diseño relativo asume la posición del primer elemento (aquí, controls_layout) en la posición habitual (es decir, sin centerInparent) y alinea el segundo elemento debajo de él.


soluciones:

  1. Dar una altura fija al diseño relativo en lugar de wrap_content o
  2. mantener los dos botones en un diseño lineal con orientación vertical y dar centerInParent al diseño lineal

Respondido 11 Jul 16, 10:07

¿Está utilizando API nivel 3 (1.5)? RelativeLayouts son muy extravagantes para 1.5. Darle una identificación a tus botones es una buena idea.

contestado el 16 de mayo de 11 a las 23:05

¿Ha intentado ejecutar esto en un dispositivo real? Tuve este problema al obtener una vista previa del diseño en eclipse, pero cuando lo ejecuté en un dispositivo, funcionó según lo previsto

respondido 13 mar '13, 15:03

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.