Est-il possible de définir la position absolue d'une vue sous Android? (Je sais qu'il y a un AbsoluteLayout
, mais c'est obsolète ...)
Par exemple, si j'ai un écran de 240x320px, comment pourrais-je ajouter un ImageView
qui fait 20x20px de telle sorte que son centre soit à la position (100,100)?
view.setTranslationX()
ouview.offsetLeftAndRight()
Réponses:
Vous pouvez utiliser RelativeLayout. Supposons que vous vouliez un ImageView 30x40 à la position (50,60) dans votre mise en page. Quelque part dans votre activité:
Plus d'exemples:
Place deux ImageViews 30x40 (une jaune, une rouge) à (50,60) et (80,90), respectivement:
Place un ImageView jaune 30x40 à (50,60) et un autre ImageView rouge 30x40 <80,90> par rapport à l' ImageView jaune:
la source
ImageView
à mettre, ne serait-il pas préférable d'utiliser unFrameLayout
?En général, vous pouvez ajouter une vue à une position spécifique en utilisant un FrameLayout comme conteneur en spécifiant les attributs leftMargin et topMargin .
L'exemple suivant placera un ImageView 20x20px à la position (100,200) en utilisant un FrameLayout comme conteneur plein écran:
XML
Activité / Fragment / Vue personnalisée
Cela fera l'affaire car les marges peuvent être utilisées comme coordonnées absolues (X, Y) sans RelativeLayout:
la source
Juste pour ajouter à la réponse d'Andy Zhang ci-dessus, si vous le souhaitez, vous pouvez donner un paramètre à rl.addView, puis y apporter des modifications plus tard, donc:
Pourrait également être écrit comme:
Donc, si vous conservez la variable params, vous pouvez changer la disposition de iv à tout moment après l'avoir ajoutée à rl.
la source
Une manière plus propre et dynamique sans coder en dur les valeurs de pixel dans le code.
Je voulais positionner une boîte de dialogue (que je gonfle à la volée) exactement en dessous d'un bouton cliqué.
et l'a résolu de cette façon:
Cependant, vous devez vous assurer que la mise en page parent de
myView
est une instance deRelativeLayout
.code plus complet:
De cette façon, vous pouvez toujours vous attendre à ce que la vue cible s'adapte à tous les paramètres de disposition définis à l'aide de fichiers XML de disposition, au lieu de coder en dur ces pixels / dps dans votre code Java.
la source
Placez n'importe quelle vue sur votre désir X & Y point
fichier de mise en page
Classe Java
Terminé
la source
Juste au cas où cela pourrait aider quelqu'un, vous pouvez également essayer cet animateur ViewPropertyAnimator comme ci-dessous
crédits à la réponse bpr10
la source
Essayez le code ci-dessous pour définir la vue sur un emplacement spécifique: -
la source
Mon code pour Xamarin , j'utilise FrameLayout à cette fin et voici mon code:
Cela m'a été utile parce que j'avais besoin que la propriété de vue se chevauche en fonction de son apparence, par exemple, les vues sont empilées les unes sur les autres .
la source