Peso de la disposición de Android

Soy nuevo en el desarrollo de Android y tengo una pregunta sobre el ajuste de peso en un diseño lineal.

Estoy intentando crear una fila con dos botones de encargo y un texto de encargo de la edición. El texto de edición sólo debe ocupar tanto espacio como su contenido y los dos botones deben expandirse horizontalmente para llenar el resto del espacio disponible en la fila. Me gusta esto…

| [#Button++#] [#Button--#] [et] | 

Después de varios intentos esto es lo más cerca que puedo llegar a lo que quiero, a pesar de que parece demasiado complicado.

 | [Button] [Button] [###ET###] | 

 <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal|center_vertical" android:layout_weight="1" > <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center_horizontal|center_vertical" > <RelativeLayout android:id="@+id/btn_plus_container" android:layout_width="fill_parent" android:layout_height="wrap_content" > <ImageButton android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/btn_plus" android:background="@drawable/btn" android:layout_centerInParent="true" ></ImageButton> <TextView android:textColor="#FAFAF4" android:id="@+id/tv_dice_plus" android:text="@string/tv_plus" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" ></TextView> </RelativeLayout> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center_horizontal|center_vertical" > <RelativeLayout android:id="@+id/btn_minus_container" android:layout_width="fill_parent" android:layout_height="wrap_content" > <ImageButton android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/btn_minus" android:background="@drawable/btn" android:layout_centerInParent="true" ></ImageButton> <TextView android:textColor="#FAFAF4" android:id="@+id/btn_minus" android:text="@string/tv_minus" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" ></TextView> </RelativeLayout> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center_horizontal|center_vertical" > <EditText android:textColor="#FAFAF4" android:text="@string/et_output" android:id="@+id/et_output" android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="number" android:selectAllOnFocus="true" android:minWidth="50sp" android:maxWidth="50sp" android:background="@drawable/tv_black_background3" android:textColorHighlight="#c30505" ></EditText> </LinearLayout> </LinearLayout> 

Como entiendo que la configuración [android: layout_weight = "2"] para los diseños lineales que sostienen los botones debería hacer que ocupen más espacio que el texto de edición, pero hace lo contrario para mí, haciéndolos a la mitad del tamaño.

 | [Btn] [Btn] [#####et#####] | 

He intentado tantas combinaciones diferentes que ni siquiera puedo recordarlas, y ninguna ha funcionado.

8 Solutions collect form web for “Peso de la disposición de Android”

No funciona porque está utilizando fill_parent como el ancho. El peso se utiliza para distribuir el espacio vacío restante o quitar el espacio cuando la suma total es mayor que el LinearLayout. Establezca sus anchos a 0dip en su lugar y funcionará.

android:Layout_weight se puede utilizar cuando no adjuntas un valor de arreglo a tu ancho como fill_parent etc.

Haga algo como esto:

 <Button> Android:layout_width="0dp" Android:layout_weight=1 -----other parameters </Button> 

Piensa que de esa manera, será más simple

Si tienes 3 botones y sus pesos son 1,3,1 por consiguiente, funcionará como tabla en HTML

Proporcione 5 porciones para esa línea: 1 porción para el botón 1, 3 porción para el botón 2 y 1 porción para el botón 1

En el conjunto linearLayout el WeightSum = 2;

Y distribuir el peso a sus hijos como quieren que se muestre .. He dado peso = "1" al niño. Así ambos distribuirán la mitad del total.

  <LinearLayout android:id="@+id/linear1" android:layout_width="match_parent" android:layout_height="wrap_content" android:weightSum="2" android:orientation="horizontal" > <ImageView android:id="@+id/ring_oss" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:src="@drawable/ring_oss" /> <ImageView android:id="@+id/maila_oss" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:src="@drawable/maila_oss" /> </LinearLayout> 

Valores de peso 0-1 distribución de partes de espacio disponible (después de establecer layout_width = "0px") en proporción al valor de peso. Ver elementos con peso no especificado (sin entrada de peso) ponen 0, lo que significa que no obtienen expansión.

Una alternativa simple, sin entradas de peso es necesario adjuntar marquesina a una vista con texto que le dice que se expanda desde el mínimo necesario para el texto (wrap_content) hasta el espacio disponible EditText: android: layout_width = "wrap_content" android: ellipsize = "marquee"

Supongo que para establecer el ancho de EditText s a wrap_content y poner los dos botones en un LinearLayout cuya anchura es fill_parent y el peso establecido en 1.

Una razón más que encontré (vaga como puede parecer). Lo siguiente no funcionó.

LinearLayout vertical

LinearLayout altura fillparent + peso

LinearLayout altura fillparent + peso

LinearLayout altura fillparent + peso

EndLinearLayout

¿Qué funcionó?

Disposición relativa

LinearLayout vertical

LinearLayout altura fillparent + peso

LinearLayout altura fillparent + peso

LinearLayout altura fillparent + peso

EndLinearLayout

EndRelativeLayout

Suena vago por un diseño de raíz con lineal y los pesos bajo no funcionó. Y cuando digo "no funcionó", quiero decir, que después de ver el diseño gráfico entre varias resoluciones de la consistencia de la pantalla se rompió el tiempo.

 <LinearLayout android:id="@+id/linear1" android:layout_width="match_parent" android:layout_height="wrap_content" android:weightSum="9" android:orientation="horizontal" > <ImageView android:id="@+id/ring_oss" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="3" android:src="@drawable/ring_oss" /> <ImageView android:id="@+id/maila_oss" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="3" android:src="@drawable/maila_oss" /> <EditText android:id="@+id/edittxt" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="3" android:src="@drawable/maila_oss" /> </LinearLayout> 
  • Alineación Vertical la gravedad no responde
  • Agregar mediante programación borde a LinearLayout
  • Cómo especificar el ancho y la altura de un elemento dibujable
  • Cómo agregar un control de botón a una vista xml de Android en tiempo de ejecución?
  • Creación de una notificación de insignia similar a la del iPhone en Android
  • Escala de ImageView al ancho del dispositivo
  • TextInputLayout Error alineado a la derecha
  • Repita un diseño complejo para cada registro
  • ¿Cómo hacer que mi diseño sea capaz de desplazarse hacia abajo?
  • Intervalo de números seguro para mi propio ID en diseño dinámico?
  • Android: ¿Cómo puedo hacer que las vistas de texto floten a la izquierda?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.