¿Cómo configurar mediante programación el atributo layout_align_parent_right de un botón en diseño relativo?
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?
Puede acceder a cualquier LayoutParams
código usando View.getLayoutParams
. Sólo tienes que ser muy consciente de a qué LayoutParams
estás accediendo. Esto normalmente se logra verificando el contenedor, ViewGroup
si tiene un LayoutParams
niñ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
Para agregar un RelativeLayout
atributo cuyo valor sea verdadero o falso, use 0
falso y RelativeLayout.TRUE
verdadero:
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)
.
- necesita crear una identificación para los botones a los que necesita hacer referencia:
btn1.setId(1);
- 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 esteLayoutParams
objeto.