web-dev-qa-db-fra.com

android ConstraintLayout ne permet pas les marges négatives

Je positionne de nombreux éléments par rapport à un guide de mise en page et souhaite positionner un nouvel élément presque par rapport à ce guide de mise en page.

J'ai essayé avec une marge de mise en page négative sans succès.

15
Softlion

Voici un publication de blog qui discute des marges négatives dans ConstraintLayout.

Utilisation d'espaces pour les marges négatives

Une vue dans un ConstraintLayout ne peut pas avoir de marges négatives (elle n'est pas prise en charge). Cependant, avec une astuce simple, vous pouvez avoir des fonctionnalités similaires en insérant un espace (qui est essentiellement une vue vide) et en définissant sa taille à la marge souhaitée.

10
Cheticamp
Android:translationX="-10dp"
Android:translationY="-10dp"
8
Pnemonic

C'est une mauvaise pratique d'utiliser MARGE NÉGATIVE .

A ConstraintLayout est un ViewGroup qui vous permet de positionner et de dimensionner des widgets de manière flexible.

Notez qu'une marge ne peut être que positive ou égale à zéro .ConstraintLayout ne peut pas avoir de marges négatives.

Vous pouvez utiliser

  • Android: layout_marginStart
  • Android: layout_marginEnd
  • Android: layout_marginLeft
  • Android: layout_marginTop
  • Android: layout_marginRight
  • Android: layout_marginBottom
1
IntelliJ Amiya

Vous pouvez utiliser une vue pour contenir une valeur fixe comme 30dp comme ci-dessous:

 <com.mapbox.mapboxsdk.maps.MapView
    Android:id="@+id/mapView"
    Android:layout_width="0dp"
    Android:layout_height="0dp"
    Android:layout_marginTop="45dp"
    app:layout_constraintBottom_toBottomOf="@id/space"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:mapbox_uiRotateGestures="false" />

<View
    Android:id="@+id/space"
    Android:layout_width="match_parent"
    Android:layout_height="30dp"
    app:layout_constraintTop_toBottomOf="parent" />
1
Hadi Note

Créer une vue pour la position de vos frères et sœurs pourrait ne pas être le meilleur choix car la vue sera dessinée (même si elle est invisible), elle utilisera toujours des ressources.

Vous pouvez essayer d'utiliser des directives à la place:

Vous pouvez ajouter une ligne directrice verticale ou horizontale à laquelle vous pouvez contraindre les vues, et la ligne directrice sera invisible pour les utilisateurs de l'application. Vous pouvez positionner la ligne directrice dans la mise en page en fonction des unités dp ou du pourcentage, par rapport au bord de la mise en page.

https://developer.Android.com/training/constraint-layout#constrain-to-a-guideline

0
user2427599