Existe-t-il une possibilité (dans ConstraintLayout
) de laisser une vue grandir tant qu'il y a de la place pour une autre vue à sa droite?
Le cas d'utilisation est d'avoir un value
et unit
TextViews en plus l'un de l'autre. Le value
TextView devrait pouvoir grandir tant qu'il y a de l'espace pour le unit
. S'il n'y a pas assez d'espace, le value
doit être coupé.
Je l'ai essayé avec des chaînes et d'autres choses, mais je ne peux pas le faire. Le value
ne cesse de croître et puis le unit
n'est plus visible. Voici le code actuel:
<TextView
Android:id="@+id/value"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginStart="8dp"
Android:lines="1"
app:layout_constraintBaseline_toBaselineOf="@+id/unit"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/unit"
tools:text="12533939532" />
<TextView
Android:id="@+id/unit"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginEnd="8dp"
Android:layout_marginStart="8dp"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintLeft_toRightOf="@id/value"
app:layout_constraintRight_toRightOf="parent"
tools:text="km" />
oui vous pouvez en utilisant match_constraint (0dp) qui est égal à match_parent pour une autre mise en page, donc en utilisant match_constraint nous fixons le poids pour la première vue qui occupera tout l'espace disponible ajouter également
app:layout_constraintWidth_default="wrap"
appliquer le comportement de largeur par défaut en tant que wrap_content
voici le code avec changement
<?xml version="1.0" encoding="utf-8"?>
<Android.support.constraint.ConstraintLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
xmlns:app="http://schemas.Android.com/apk/res-auto">
<TextView
Android:id="@+id/value"
Android:layout_width="0dp"
app:layout_constraintWidth_default="wrap"
Android:layout_height="wrap_content"
Android:layout_marginStart="8dp"
Android:lines="1"
app:layout_constraintBaseline_toBaselineOf="@+id/unit"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/unit"
tools:text="12533939532" />
<TextView
Android:id="@+id/unit"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginEnd="8dp"
Android:layout_marginStart="8dp"
app:layout_constraintLeft_toRightOf="@id/value"
app:layout_constraintRight_toRightOf="parent"
tools:text="km" />
</Android.support.constraint.ConstraintLayout>
a obtenu une explication du site
Meilleur contrôle des dimensions de la vue
Les nouveaux comportements disponibles lorsqu'une dimension est définie sur 0dp (MATCH_CONSTRAINT) . Comme précédemment, les deux points d'extrémité (gauche/droite ou haut/bas) doivent être connectés aux cibles.
layout_constraintWidth_default = spread (par défaut, similaire au comportement précédent) layout_constraintWidth_default = wrap layout_constraintHeight_default = spread layout_constraintHeight_default = wrap
Wrap fournit un nouveau comportement significatif, le widget se redimensionnant comme si wrap_content était utilisé, mais limité par les contraintes connectées. Un widget ne se développera donc pas au-delà des points de terminaison.
http://tools.Android.com/recent/constraintlayoutbeta5isnowavailable