Cómo establecer mediante programación el atributo layout_align_parent_right de un botón en la disposición relativa?

StackOverflow https://stackoverflow.com/questions/4638832

Pregunta

Tengo una disposición relativa 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 añadir en esta disposición relativa. Pero el problema es los dos botones se muestran a la izquierda de la RelatiiveLayout superpuestos unos sobre otros.

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

Ahora me gustaría saber cómo puedo ajustar la programación del android:layout_alignParentRight="true" o atributo android:layout_toLeftOf="@id/btn" de los botones como lo hacemos en el xml?

¿Fue útil?

Solución

Se puede acceder a cualquier LayoutParams de código usando View.getLayoutParams. Sólo tienes que ser muy consciente de lo que LayoutParams su acceso. Esto se consigue normalmente mediante la comprobación de la ViewGroup que contiene si tiene un niño interior LayoutParams entonces que es la que se debe utilizar. En su caso se trata de RelativeLayout.LayoutParams. Usted va a utilizar RelativeLayout.LayoutParams#addRule(int verb) y < a href = "http://developer.android.com/reference/android/widget/RelativeLayout.LayoutParams.html#addRule(int%2C%20int)" rel = "noreferrer"> RelativeLayout.LayoutParams#addRule(int verb, int anchor)

Se puede llegar a ella a través de 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

Otros consejos

  1. que necesita para crear y para la Identificación botones que necesitan refference: btn1.setId(1);
  2. se puede utilizar la variable de params añadir parámetros a su disposición, i pensar que el método es addRule(), cheque los documentos de Java Android de este LayoutParams objeto.

Para añadir un atributo RelativeLayout cuyo valor es verdadero o falso uso 0 para falsa y RelativeLayout.TRUE para la verdadera:

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

No importa si es o no el atributo ya se añadió, que todavía utilizan addRule(verb, subject) para activar / desactivar la misma. Sin embargo, después de la API 17 se puede utilizar removeRule(verb) que es sólo un atajo para addRule(verb, 0).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top