2010-07-18 8 views

risposta

403

Sì:

RelativeLayout.LayoutParams params= new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT); 
params.addRule(RelativeLayout.BELOW, R.id.below_id); 
viewToLayout.setLayoutParams(params); 

In primo luogo, il codice crea un nuovo layout di params specificando l'altezza e la larghezza. Il metodo addRule aggiunge l'equivalente dell'xml correttamente android:layout_below. Quindi chiami semplicemente View#setLayoutParams sulla vista che vuoi avere quei parametri.

+2

Qberticus - grazie mille per la risposta dettagliata e chiara. Lo contollerò. – AlanH

+0

Questo funziona bene per me. Grazie ancora. – AlanH

+0

Buona spiegazione ... –

119

In alternativa è possibile utilizzare i punti di vista del layout parametri attuali e modificarli:

RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) viewToLayout.getLayoutParams(); 
params.addRule(RelativeLayout.BELOW, R.id.below_id); 
+3

È più simile a un commento alla risposta esistente, che un'altra risposta –

+13

@EelLee È chiaramente un altro modo di rispondere alla domanda, che è il motivo per cui ha 11 voti positivi –

+6

dovrebbe avere più uptotes rispetto all'altra risposta: per mantenere un comportamento coerente della vista, dovremmo lavorare con 'LayoutParams 'esistenti piuttosto che crearne di nuovi, infatti, questa dovrebbe essere accettata come risposta corretta. –

4

Mentre risposta @jackofallcode è corretta, si può essere scritto in una sola riga:

((RelativeLayout.LayoutParams) viewToLayout.getLayoutParams()).addRule(RelativeLayout.BELOW, R.id.below_id); 
Problemi correlati