2011-05-13 12 views

Respuesta

33

Sí tienes razón en el peso, cuando se desea que la anchura o la altura a ser controlados por el peso de su convención para fijar ese valor a 0dip y dejar que el peso controlar el valor real. Aunque estoy bastante seguro de que 0 es arbitrario aquí, podrías poner cualquier cosa, pero poner 0 hace que tu intención sea más clara.

+23

estableciendo el 'layout_width' o' layout_height' en '0px' o' 0dip' es bastante más para el rendimiento en tiempo de ejecución en lugar de la convención. Ajustándolo a '0px' (o' 0dip') omitirá los ciclos de CPU necesarios para la inicialización inicial y el ancho/alto de la vista se ajustará según sea necesario. En resumen, el tiempo de ejecución solo tendrá que calcular la altura/ancho una vez en lugar de 2 veces ... –

+1

No realmente, porque puede no funcionar si se guarda fill_parent. –

9

Cuando se utiliza un LinearLayout si se establece la layout_weight a un valor distinto de cero y se establece el layout_height (o layout_width) para 0PX o 0dip entonces el LinearLayout distribuye cualquier espacio no asignado a lo largo del eje apropiado basado en los pesos. Entonces, por ejemplo, si observa el diseño debajo de la Vista con id * gestures_overlay * tiene layout_height 0dip y layout_weight 1 por lo que el LinearLayout padre lo estira para llenar el espacio vertical disponible entre los 2 LinearLayouts circundantes. Si hubiera otra Vista con el mismo 0dip layout_height y un valor de layout_weight, entonces compartirían el espacio vertical en función de sus valores de peso.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 

    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 

    android:orientation="vertical"> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 

     android:orientation="horizontal"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginRight="6dip" 

      android:text="@string/prompt_gesture_name" 
      android:textAppearance="?android:attr/textAppearanceMedium" /> 

     <EditText 
      android:id="@+id/gesture_name" 
      android:layout_width="0dip" 
      android:layout_weight="1.0" 
      android:layout_height="wrap_content" 

      android:maxLength="40" 
      android:singleLine="true" /> 

    </LinearLayout> 

    <android.gesture.GestureOverlayView 
     android:id="@+id/gestures_overlay" 
     android:layout_width="fill_parent" 
     android:layout_height="0dip" 
     android:layout_weight="1.0" 

     android:gestureStrokeType="multiple" /> 

    <LinearLayout 
     style="@android:style/ButtonBar" 

     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 

     android:orientation="horizontal"> 

     <Button 
      android:id="@+id/done" 

      android:layout_width="0dip" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 

      android:enabled="false" 

      android:onClick="addGesture" 
      android:text="@string/button_done" /> 

     <Button 
      android:layout_width="0dip" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 

      android:onClick="cancelGesture" 
      android:text="@string/button_discard" /> 

    </LinearLayout> 

</LinearLayout> 
+0

¿Cuál es el significado de peso cero? owr instructor en curso de Android haga esta pregunta. ¿Cuál es el uso del peso cero en el diseño de la interfaz de usuario de Android? –

2

Un ejemplo relevante de los documentos oficiales de desarrolladores (http://developer.android.com/guide/topics/ui/layout/linear.html): niños

de igual ponderación

para crear una disposición lineal en la que cada niño utiliza la misma cantidad de espacio en la pantalla, ajuste el android: layout_height de cada vista a "0dp" (para un diseño vertical) o el android: layout_width de cada vista a "0dp" (para un diseño horizontal). Luego configure el android: layout_weight de cada vista en "1".

Cuestiones relacionadas