¿Cómo puedo establecer el valor del atributo layout_weight
para el botón en Android dinámicamente desde el código de Java?
245
¿Cómo puedo establecer el valor del atributo layout_weight
para el botón en Android dinámicamente desde el código de Java?
Respuestas:
Puede pasarlo como parte del
LinearLayout.LayoutParams
constructor:El último parámetro es el peso.
fuente
param = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, (float) 1.0);
1f
si no hay decimalesRelative
Uso
LinearLayout.LayoutParams
:EDITAR: ¡Ah, la respuesta de Erich es más fácil!
fuente
FILL_PARENT
ha quedado en desuso yMATCH_PARENT
debería usarse en su lugar.MATCH_PARENT
puede usarse en lugar deFILL_PARENT
incluso en dispositivos más antiguos.FILL_PARENT
vsMATCH_PARENT
.Si ya define su vista en su archivo de diseño (xml), solo desea cambiar el peso mediante programación, de esta manera es mejor
Un nuevo LayoutParams sobrescribe otros parámetros definidos en su archivo xml como márgenes, o debe especificarlos en LayoutParams.
fuente
Si el constructor con ancho, alto y peso no funciona, intente usar el constructor con ancho y alto. Y luego establezca manualmente el peso.
Y si desea establecer el ancho de acuerdo con el peso, establezca el ancho como 0 en el constructor. Lo mismo se aplica para la altura. El siguiente código funciona para mí.
fuente
Si alguien busca respuesta, use esto:
Si está inicializando su diseño desde un archivo xml, esto será mucho más conveniente que proporcionar nuevos parámetros de diseño para Diseño lineal.
fuente
layout_weight
ya se ha establecido, debe llamarView.requestLayout()
para actualizar.Cualquiera de
LinearLayout.LayoutParams
yTableLayout.LayoutParams
funcionó para mí, para los botones es el correctoTableRow.LayoutParams
. Es decir:Sobre usar
MATCH_PARENT
oWRAP_CONTENT
ser el mismo.fuente
FILL_PARENT
ha quedado en desuso yMATCH_PARENT
debería usarse en su lugar.LayoutParams
padre directo. Supongo que tuvo un accidente al intentar usarLinearLayout.LayoutParams
sin el padreLinearLayout
.Si ya ha definido su vista en el archivo de diseño (xml) y solo desea cambiar el peso de forma programática, entonces crear nuevos LayoutParams sobrescribe otros parámetros definidos en su archivo xml.
Entonces, primero debes usar "getLayoutParams" y luego setLayoutParams
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) mButton.getLayoutParams(); params.weight = 4f; mButton.setLayoutParams(params);
fuente
Si
layoutparams
ya está definido (en XML o dinámicamente), aquí hay una línea:fuente
Usando Kotlin puedes hacer algo como:
fuente