¿Cómo configurar mediante programación el atributo layout_align_parent_right de un botón en diseño relativo?

Resuelto Fahad Ali asked hace 54 años • 5 respuestas

Tengo un diseño relativo que estoy creando mediante programación:

 RelativeLayout layout = new RelativeLayout( this );
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,
            LayoutParams.WRAP_CONTENT);

Ahora tengo dos botones que quiero agregar en este diseño relativo. Pero el problema es que ambos botones se muestran a la izquierda de RelatiiveLayout superpuestos entre sí.

buttonContainer.addView(btn1);
buttonContainer.addView(btn2);

Ahora quiero saber ¿cómo puedo configurar mediante programación el atributo android:layout_alignParentRight="true"o" android:layout_toLeftOf="@id/btn"de los botones como lo hacemos en el xml?

Fahad Ali avatar Jan 01 '70 08:01 Fahad Ali
Aceptado

Puede acceder a cualquier LayoutParamscódigo usando View.getLayoutParams. Sólo tienes que ser muy consciente de a qué LayoutParamsestás accediendo. Esto normalmente se logra verificando el contenedor, ViewGroupsi tiene un LayoutParamsniño interior, entonces ese es el que debes usar. En tu caso es RelativeLayout.LayoutParams. Estarás usando RelativeLayout.LayoutParams#addRule(int verb)yRelativeLayout.LayoutParams#addRule(int verb, int anchor)

Puedes acceder a él mediante el código:

RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)button.getLayoutParams();
params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
params.addRule(RelativeLayout.LEFT_OF, R.id.id_to_be_left_of);

button.setLayoutParams(params); //causes layout update
Rich Schuler avatar Jan 09 '2011 12:01 Rich Schuler

Para agregar un RelativeLayoutatributo cuyo valor sea verdadero o falso, use 0falso y RelativeLayout.TRUEverdadero:

RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) button.getLayoutParams()
params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE)

No importa si el atributo ya se agregó o no, aún puede usarlo addRule(verb, subject)para habilitarlo/deshabilitarlo. Sin embargo, puedes usar la versión posterior a API 17 removeRule(verb), que es solo un atajo para addRule(verb, 0).

shoe avatar Jun 10 '2018 05:06 shoe
  1. necesita crear una identificación para los botones a los que necesita hacer referencia: btn1.setId(1);
  2. puede usar la variable params para agregar parámetros a su diseño, creo que el método es addRule(), consulte los documentos de Android Java para este LayoutParamsobjeto.
codeScriber avatar Jan 09 '2011 11:01 codeScriber