Réponses:
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 un nouveau paramètre de mise en page en spécifiant la hauteur et la largeur. La addRule
méthode ajoute correctement l'équivalent du xml android:layout_below
. Ensuite, vous appelez simplement View#setLayoutParams
la vue que vous souhaitez avoir ces paramètres.
Vous pouvez également utiliser les paramètres de présentation actuels des vues et les modifier:
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) viewToLayout.getLayoutParams();
params.addRule(RelativeLayout.BELOW, R.id.below_id);
LayoutParams
plutôt que d'en créer de nouveaux. En fait, cela devrait être accepté comme la bonne réponse.
Bien que la réponse @jackofallcode soit correcte, elle peut être écrite sur une seule ligne:
((RelativeLayout.LayoutParams) viewToLayout.getLayoutParams()).addRule(RelativeLayout.BELOW, R.id.below_id);
LayoutParams
pour les définirsetLayoutParams
Version Kotlin avec fonction infixe
infix fun View.below(view: View) {
(this.layoutParams as? RelativeLayout.LayoutParams)?.addRule(RelativeLayout.BELOW, view.id)
}
Ensuite, vous pouvez écrire:
view1 below view2
Ou vous pouvez l'appeler comme une fonction normale:
view1.below(view2)