paleta - Peso del diseño de Android
material design android (8)
En lineLayout establece WeightSum = 2;
Y distribuya el peso a sus hijos como desee que se muestren. Le di peso = "1" al niño. De modo que 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>
Soy nuevo en el desarrollo de Android y tengo una pregunta sobre cómo establecer el peso en un diseño lineal.
Estoy intentando crear una fila con dos botones personalizados y un texto de edición personalizado. El texto de edición solo 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 configurar [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í, por lo que ambos tienen la mitad del tamaño.
| [Btn] [Btn] [#####et#####] |
He probado tantas combinaciones diferentes que ni siquiera puedo recordarlas, y ninguna ha funcionado.
No funciona porque está utilizando fill_parent como ancho. El peso se usa para distribuir el espacio vacío restante o quitar espacio cuando la suma total es mayor que LinearLayout. Establezca sus anchuras a 0 dips en su lugar y funcionará.
Piénsalo de esa manera, será más simple
Si tiene 3 botones y sus pesos son 1,3,1 en consecuencia, 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
Una razón más que encontré (por vago que pueda parecer). Lo de abajo no funcionó.
LinearLayout vertical
LinearLayout altura fillparent + peso
LinearLayout altura fillparent + peso
LinearLayout altura fillparent + peso
EndLinearLayout
¿Qué trabajo fue?
Disposición relativa
LinearLayout vertical
LinearLayout altura fillparent + peso
LinearLayout altura fillparent + peso
LinearLayout altura fillparent + peso
EndLinearLayout
EndRelative Lay out
Suena vago por un diseño de raíz con Lineal y los pesos debajo no funcionaban. Y cuando digo "no funcionó", quiero decir, que después de ver el diseño gráfico entre varias resoluciones, la consistencia de la pantalla se rompió a lo grande.
los valores de peso 0-1 comparten la distribución del espacio disponible (después de establecer layout_width = "0px") en proporción al valor del peso. Los elementos de vista con peso no especificado (sin entrada de peso) obtienen peso 0 lo que significa que no obtienen expansión.
Una alternativa simple sin entradas de peso es agregar una marquesina a una vista con texto que le indique que se expanda del mínimo necesario para el texto (wrap_content) al espacio disponible. EditText: android: layout_width = "wrap_content" android: ellipsize = "marquee"
supongo que establecería el ancho de EditText
s en wrap_content
y wrap_content
los dos botones en LinearLayout
cuyo ancho es fill_parent
y weight establecido en 1.
android:Layout_weight
se puede usar cuando no adjuntas un valor fijo a tu ancho como fill_parent
etc.
Haz algo como esto:
<Button>
Android:layout_width="0dp"
Android:layout_weight=1
-----other parameters
</Button>
<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>