Pregunta

En mi aplicación, tengo 2 diseños lineales:uno arriba, otro abajo.

Me gustaría eso lo que sea que esté dentro de este diseño, el diseño de la parte superior ocupa el 60% de la altura de la pantalla y el diseño de la parte inferior el 40%.Aquí está mi código XML:

   <?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:layout_weight="1.0" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.6"
        android:orientation="vertical" 
         android:id="@+id/layout_top">
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_weight="0.4" 
        android:id="@+id/layout_bottom">
    </LinearLayout>

</LinearLayout>

Cuando estos diseños están vacíos, no hay problema, tienen buena proporción.

El problema es que si coloco una pequeña vista de lista en el diseño superior, por ejemplo.entonces el diseño tomará el tamaño de la vista de lista y no conservará la proporción del 60/40%.

Me gustaría que incluso si mi vista de lista es pequeña (solo 3 elementos, por ejemplo), el diseño conserve su 60% y, por lo tanto, coloque un espacio vacío debajo de mi vista de lista.

he tratado de cambiar android:layout_height a match_parent pero no cambia nada.

¿Fue útil?

Solución

Intente usar este diseño, funciona para mí.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:layout_weight="1.0" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="6"
        android:orientation="vertical" 
         android:id="@+id/layout_top"
         android:background="#FF0000">
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:orientation="vertical"
        android:layout_weight="4" 
        android:id="@+id/layout_bottom"
        android:background="#FF00FF">
    </LinearLayout>

</LinearLayout>

El truco consiste en montar un layout_height="0dip" en lugar de wrap_content en modo vertical y layout_with="0dip" en lugar de wrap_content en modo horizontal, puedes usar la carpeta layout-land para eso.

Otros consejos

layout_weight especifica espacio adicional en el diseño de la vista.Primero deberías intentar medir tu pantalla como:

Display display = ((WindowManager) 
  getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 
int width = display.getHeight();

y luego haciendo algunos cálculos como width*0.6 y 0.4, de esta manera su diseño siempre tendrá una proporción de 60 40.

Espero que esto ayude

intentar layout_height = 0dp en ambos niños LinearLayouts.Está sucediendo porque tienes wrap_content que probablemente esté anulando el layout_weight efecto.

Simplemente en su diseño principal, reemplace android:layout_weight="1.0" con android:weightSum="1.0"

Esto funciona estableciendo la suma de pesos del diseño principal y los pesos de los diseños secundarios.El peso de los hijos debe ser igual a la suma del peso de los padres.Mira esto http://blog.stylingandroid.com/archives/312

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top