2011-01-09 10 views
235

que tienen una disposición relativa que estoy creando mediante programación:¿Cómo establecer programáticamente el atributo layout_align_parent_right de un botón en diseño relativo?

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

Ahora tienen dos botones que quiero añadir en esta disposición relativa. 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 programáticamente establecer el del android:layout_alignParentRight="true " o android:layout_toLeftOf="@id/btn" atributo de los botones como lo hacemos en el xml?

Respuesta

561

Puede acceder a cualquier LayoutParams desde el código usando View.getLayoutParams. Solo debe saber a qué LayoutParams tiene acceso. Esto normalmente se logra al verificar que contiene ViewGroup si tiene un niño interior LayoutParams, entonces ese es el que debe usar. En tu caso es RelativeLayout.LayoutParams. Usted va a utilizar RelativeLayout.LayoutParams#addRule(int verb) y RelativeLayout.LayoutParams#addRule(int verb, int anchor)

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 
+1

¿qué sucede si el ancla no tiene una identificación? params.addRule (RelativeLayout.LEFT_OF, R.id.id_to_be_left_of); TextView tvUserName = new TextView (act); –

+13

¿qué le parece agregar la identificación? – user2161301

+1

¿Qué sucede si 'button' está en un' RecycleView'? ¿No es un problema agregar reglas iguales u opuestas al mismo widget? –

10
  1. lo necesario para crear y la identificación de los botones que necesita para refference: btn1.setId(1);
  2. puede utilizar la variable params a añadir parámetros a su disposición, i que el método es addRule(), marque en los documentos de android java para este objeto LayoutParams.
+0

I altamente agradecería cualquier pieza de código. No encuentro ningún método en el botón. –

+0

El ID de configuración no ayuda, ya que está esperando una identificación de recurso real en lugar de solo un número, ya que setId se está anotando con @IdRes. –

+0

eso es nuevo entonces, en el pasado se podía tomar un número de recurso de diseños, por ejemplo, y usarlo como base para la identificación de recursos que no colisionaría. Supongo que Google debe haber bloqueado eso/ – codeScriber

Cuestiones relacionadas