Est-il possible de définir la position absolue d’un affichage dans android ? (Je sais qu’il existe une DispositionAbsolue, mais il est obsolète...) Permet de dire j’ai un écran 240x320px, et je veux mettre une ImageView qui est 20x20px avec son centre à la position (100 100). Que dois-je faire ? Merci pour l’aide, cela me rend fou.
Réponses
Trop de publicités?Vous pouvez utiliser RelativeLayout. Supposons que vous vouliez une ImageView 30 x 40 à la position (50,60) à l’intérieur de votre mise en page. Quelque part dans votre activité :
Autres exemples :
ImageViews lieux deux 30 x 40 (un jaune, un rouge) à (50,60) et (80,90), respectivement :
Lieux un 30 x 40 jaune ImageView à (50,60) et un autre 30 x 40 rouge ImageView relatif à l’ImageView jaune :
Juste pour ajouter à la réponse de Andy Zhang qui précède, si vous le souhaitez, vous pouvez donner param à rl.addView, puis apporter des modifications à elle par la suite, donc :
Pourrait tout aussi bien s’écrire :
Donc si vous conservez la variable params, vous pouvez changer la disposition des iv à tout moment après son ajout à rl.
Une version plus propre et dynamique sans coder en dur toutes les valeurs de pixels dans le code.
Je voulais position d'une boîte de dialogue (qui, je le gonfler à la volée) exactement au-dessous d'un cliqué sur le bouton.
et résolu de cette façon :
// get the yoffset of the position where your View has to be placed
final int yoffset = < calculate the position of the view >
// position using top margin
if(myView.getLayoutParams() instanceof MarginLayoutParams) {
((MarginLayoutParams) myView.getLayoutParams()).topMargin = yOffset;
}
Cependant, vous devez assurez-vous que le parent disposition de l' myView
est une instance de l' RelativeLayout
.
code plus complet :
// identify the button
final Button clickedButton = <... code to find the button here ...>
// inflate the dialog - the following style preserves xml layout params
final View floatingDialog =
this.getLayoutInflater().inflate(R.layout.floating_dialog,
this.floatingDialogContainer, false);
this.floatingDialogContainer.addView(floatingDialog);
// get the buttons position
final int[] buttonPos = new int[2];
clickedButton.getLocationOnScreen(buttonPos);
final int yOffset = buttonPos[1] + clickedButton.getHeight();
// position using top margin
if(floatingDialog.getLayoutParams() instanceof MarginLayoutParams) {
((MarginLayoutParams) floatingDialog.getLayoutParams()).topMargin = yOffset;
}
De cette façon, vous pouvez toujours attendre la vue cible pour s'adapter à tous les paramètres de mise en page définie à l'aide de mise en page des fichiers XML, au lieu de coder en dur ces pixels/dps dans votre code Java.