personalizar - tipos de layout android studio
¿Cómo establecer mediante programación el atributo layout_align_parent_right de un botón en Relative Layout? (3)
Tengo un diseño relativo que estoy creando programáticamente:
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 del RelatiiveLayout superpuestos entre sí.
buttonContainer.addView(btn1);
buttonContainer.addView(btn2);
Ahora quiero saber cómo puedo programar el android:layout_alignParentRight="true
" o android:layout_toLeftOf="@id/btn"
atributo de los botones como lo hacemos en el xml?
- necesita crear e id para los botones que necesita
btn1.setId(1);
:btn1.setId(1);
- puedes usar la variable params para agregar parámetros a tu diseño, creo que el método es
addRule()
, revisa los documentos java de Android para este objetoLayoutParams
.
Para agregar un atributo RelativeLayout
cuyo valor sea verdadero o falso, use 0
para falso y RelativeLayout.TRUE
para verdadero:
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) button.getLayoutParams()
params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE)
No importa si el atributo ya fue agregado o no, usted todavía usa addRule(verb, subject)
para habilitarlo / deshabilitarlo. Sin embargo, después de la API 17 puede usar removeRule(verb)
que es solo un acceso directo para addRule(verb, 0)
.
Puede acceder a cualquier LayoutParams
desde el código usando View.getLayoutParams
. Solo debes ser muy consciente de a qué LayoutParams
estás accediendo. Esto normalmente se logra al verificar el ViewGroup
contiene si tiene un LayoutParams
interno de LayoutParams
entonces ese es el que debe usar. En su caso es RelativeLayout.LayoutParams
. Utilizará RelativeLayout.LayoutParams#addRule(int verb)
y RelativeLayout.LayoutParams#addRule(int verb, int anchor)
Puedes acceder a ella a través del 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