web-dev-qa-db-fra.com

Puis-je définir "Android: layout_below" au programme d'exécution par programme?

Est-il possible lors de la création de RelativeLayout au moment de l'exécution de définir l'équivalent de Android:layout_below par programme?

193
AlanH

Oui:

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);

Tout d'abord, le code crée de nouveaux paramètres de mise en page en spécifiant la hauteur et la largeur. La méthode addRule ajoute l'équivalent du xml correctement Android:layout_below. Ensuite, vous appelez simplement View#setLayoutParams sur la vue que vous voulez avoir ces paramètres.

445
Rich Schuler

Sinon, vous pouvez utiliser les paramètres de présentation actuels et les modifier:

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

Bien que @jackofallcode answer soit correct, vous pouvez l'écrire sur une seule ligne:

((RelativeLayout.LayoutParams) viewToLayout.getLayoutParams()).addRule(RelativeLayout.BELOW, R.id.below_id);
6
CoolMind