J'apprends à utiliser ConstraintLayout
et j'ai trouvé quelques bons tutoriels pour afficher les vues en largeur et en hauteur en pourcentage. Je sais que je peux probablement ajouter une vue vide pour "créer" une marge, mais cela ne semble pas correct. Existe-t-il un moyen de faire des choses comme marginEnd='10%'
?
Il existe deux façons d’ajouter un pourcentage de marge à l’aide de ConstraintLayout.
Ajoutez simplement vertical guideline à votre présentation et à la vue des contraintes:
<Android.support.constraint.ConstraintLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<View
Android:id="@+id/view"
Android:layout_width="0dp"
Android:layout_height="50dp"
Android:background="@color/colorAccent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/guideline"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Android.support.constraint.Guideline
Android:id="@+id/guideline"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:orientation="vertical"
app:layout_constraintGuide_percent="0.9" />
</Android.support.constraint.ConstraintLayout>
Ajoutez un espace, placez-le à l'extrême gauche du parent, regroupez votre vue et l'espace dans "étalez" la chaîne et définissez app:layout_constraintHorizontal_weight="90"
sur votre vue et app:layout_constraintHorizontal_weight="10"
sur espace. Cela fonctionne très semblable au poids de LinearLayout.
<Android.support.constraint.ConstraintLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<View
Android:id="@+id/view"
Android:layout_width="0dp"
Android:layout_height="50dp"
Android:background="@color/colorAccent"
app:layout_constraintHorizontal_chainStyle="spread"
app:layout_constraintHorizontal_weight="90"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@+id/space"
app:layout_constraintBottom_toBottomOf="parent" />
<Space
Android:id="@+id/space"
Android:layout_width="0dp"
Android:layout_height="wrap_content"
app:layout_constraintHorizontal_weight="10"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toEndOf="@+id/view"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
</Android.support.constraint.ConstraintLayout>
En conséquence, votre vue a une marge de fin avec une valeur de 10% de la largeur du parent:
Astuce n ° 3:
pour le pourcentage des deux côtés
app:layout_constraintWidth_percent=".80"
Vous voudrez peut-être des contraintes imbriquées avec
app:layout_constraintWidth_percent="0.9"
app:layout_constraintHorizontal_bias="0.25"
<?xml version="1.0" encoding="utf-8"?>
<Android.support.constraint.ConstraintLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<Android.support.constraint.ConstraintLayout
Android:layout_width="0dp"
Android:layout_height="50dp"
Android:orientation="vertical"
Android:focusable="true"
Android:focusableInTouchMode="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintWidth_percent="0.9">
<View
Android:id="@+id/view"
Android:layout_width="0dp"
Android:layout_height="0dp"
Android:background="@color/colorAccent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintLeft_toLeftOf="parent"/>
</Android.support.constraint.ConstraintLayout>
</Android.support.constraint.ConstraintLayout>
Exemple Xml avec biais
<?xml version="1.0" encoding="utf-8"?>
<Android.support.constraint.ConstraintLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<Android.support.constraint.ConstraintLayout
Android:layout_width="0dp"
Android:layout_height="50dp"
Android:orientation="vertical"
Android:focusable="true"
Android:focusableInTouchMode="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintWidth_percent="0.9"
app:layout_constraintHorizontal_bias="0.25">
<View
Android:id="@+id/view"
Android:layout_width="0dp"
Android:layout_height="0dp"
Android:background="@color/colorAccent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintLeft_toLeftOf="parent"/>
</Android.support.constraint.ConstraintLayout>
</Android.support.constraint.ConstraintLayout>