youtubers tesis sobre sirve resumida que para investigaciones investigacion historia caracteristicas android android-layout relativelayout layoutparams

android - sirve - tesis sobre youtube pdf



¿Cómo elimino programáticamente una regla existente que se definió en XML? (3)

Tengo un diseño lineal que está contenido dentro de un diseño relativo. Se establece en el archivo XML para que esté a la derecha de otro diseño lineal (esto funciona bien). En algunos casos, deseo cambiar la posición relativa del diseño durante la onCreate de la actividad, por lo que necesito modificar el parámetro "a la derecha de" para relacionarlo con otro diseño. Intenté esto:

RelativeLayout.LayoutParams layoutParams; layoutParams = (RelativeLayout.LayoutParams) linearLayoutToMove .getLayoutParams(); layoutParams.addRule(RelativeLayout.RIGHT_OF, R.id.new_ref_LinearLayout);

Pero no funciona: o (

Alguna pista ?


Creo que debes llamar:

relativeLayout.updateViewLayout(linearLayoutToMove, layoutParams);

después de cambiar los LayoutParams.

En respuesta a la edición, puede crear nuevos LayoutParameters usando:

LinearLayout.LayoutParams = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT);

y luego agrega tus nuevas reglas. A continuación, actualice los parámetros de diseño utilizando el método updateViewLayout () mencionado anteriormente.


No puede eliminar una regla porque todas las reglas siempre se almacenan en una matriz java de tamaño fijo. Pero puedes establecer una regla en 0 . Por ejemplo

layoutParams.addRule(RelativeLayout.RIGHT_OF, 0); layoutParams.addRule(RelativeLayout.BELOW, R.id.new_ref_LinearLayout);

EDITAR (gracias a Roger Rapid ):

A partir del nivel 17 de API, la clase RelativeLayout.LayoutParams tiene el siguiente método:

public void removeRule(int verb)

Entonces puedes eliminar una regla usando la siguiente línea de código:

layoutParams.removeRule(RelativeLayout.RIGHT_OF);

Y obtendrá exactamente el mismo resultado que cuando ''agrega'' una regla cero como:

layoutParams.addRule(RelativeLayout.RIGHT_OF, 0);


agregue el siguiente código a su código existente

linearLayoutToMove.setLayoutParams(layoutParams)

Creo que esto debería hacer el trabajo. En caso de que la línea anterior no funcione, intente llamar linearLayoutToMove.invalidate() después de la línea anterior.