Establecer peso (porcentaje) mediante programación

Tengo dos botones que me gustaría dinámicamente peso dar una preferencia. Comienzan cada uno con un peso de .5 (que por supuesto agrega al peso de 1 del LinearLayout), pero si la preferencia es verdad, entonces quisiera cambiar sus pesos a .7 y .3 respectivamente. Puedo fijar el peso en XML pero no puedo parecer encontrar cómo cambiarlo programmatically.


Solución

LinearLayout.LayoutParams PO = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, .60f); LinearLayout.LayoutParams MO = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, .20f); 

Mira en LayoutParams , tiene un campo para establecer el peso

Use esto para reciclar el objeto LayoutParam :

 ((LinearLayout.LayoutParams) view.getLayoutParams()).weight = 0.2f; view.refreshDrawableState(); // This is to explicit force the refresh. 

Si el constructor con ancho, altura y peso no funciona, intente usar el constructor con anchura y altura. A continuación, ajuste manualmente el peso.

Y si desea que el ancho se establezca de acuerdo con el peso, fije el ancho como 0 en el constructor. Lo mismo se aplica a la altura. Por debajo del código funciona para mí.

 LinearLayout.LayoutParams childParam1 = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.MATCH_PARENT); childParam1.weight = 0.3f; child1.setLayoutParams(childParam1); LinearLayout.LayoutParams childParam2 = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.MATCH_PARENT); childParam1.weight = 0.7f; child2.setLayoutParams(childParam2); parent.setWeightSum(1f); parent.addView(child1); parent.addView(child2); 
  • Android: Recyclerview horizontal dentro de una Recyclerview vertical
  • Android busca recursos en la carpeta de retrato incluso cuando la aplicación está bloqueada en Paisaje
  • ¿Cómo rotar mi aplicación 180 grados al revés sobre el dispositivo giratorio 180 grados al revés?
  • Rellenar manualmente un ListView
  • Diseño de la charla de burbujas
  • GetMeasuredHeight () de TextView con el texto incluido
  • Diferencia entre androide: orientación = "vertical" vs androide: orientación = "horizontal"
  • Estado de ahorro en widgets de vista compuesta
  • Android: Layouts "diapositivas" de la pantalla?
  • Definir un estilo personalizado (tema) en un componente de conmutador Android
  • Nueva interfaz de la tarjeta Google Now y Google+
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.