Comme vous le voyez sur la photo, le texte est sorti du mur. C'est un comportement tellement bizarre et je pense que c'est un bug
Voici une capture d'écran:
Voici l'en-tête xml:
<Android.support.constraint.ConstraintLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="?android:attr/windowBackground"
Android:orientation="vertical">
<TextView
Android:id="@+id/street_name"
Android:layout_width="wrap_content"
Android:layout_height="0dp"
Android:layout_marginStart="15dp"
Android:text="street name"
Android:textColor="?AppTheme.InformationText"
Android:textSize="14sp"
Android:textStyle="bold"
Android:gravity="center"
Android:layout_marginTop="8dp"
Android:layout_marginRight="8dp"
Android:layout_marginBottom="19dp"
Android:layout_marginLeft="0dp"
app:layout_constraintWidth_default="wrap"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="@+id/guideline29"
app:layout_constraintTop_toTopOf="@+id/guideline37"
app:layout_constraintRight_toLeftOf="@+id/guideline30"
app:layout_constraintHorizontal_bias="0.605"
app:layout_constraintVertical_bias="0.0"/>
<ImageView
Android:id="@+id/street_view_image"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:adjustViewBounds="true"
Android:padding="6dp"
Android:scaleType="fitCenter"
tools:layout_constraintLeft_creator="1"
Android:layout_marginLeft="0dp"
app:layout_constraintLeft_toLeftOf="@+id/country_flag_image"
app:layout_constraintBottom_toBottomOf="parent"
Android:layout_marginBottom="0dp"
app:layout_constraintRight_toLeftOf="@+id/guideline29"
Android:layout_marginRight="8dp"
app:layout_constraintTop_toTopOf="@+id/guideline37"
Android:layout_marginTop="8dp"/>
<ImageView
Android:id="@+id/country_flag_image"
Android:layout_width="0dp"
Android:layout_height="0dp"
Android:layout_marginLeft="4dp"
Android:layout_marginStart="4dp"
Android:layout_marginTop="8dp"
Android:adjustViewBounds="true"
Android:paddingBottom="5dp"
Android:paddingLeft="5dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:layout_constraintLeft_creator="1"
tools:layout_constraintTop_creator="1"
/>
<de.hdodenhof.circleimageview.CircleImageView
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:id="@+id/exit_image"
Android:layout_width="46dp"
Android:layout_height="46dp"
Android:layout_marginBottom="8dp"
Android:layout_marginRight="-4dp"
Android:src="@drawable/exit_custom"
app:border_color="#FF000000"
app:layout_constraintBottom_toBottomOf="@+id/street_view_image"
app:layout_constraintRight_toRightOf="@+id/street_view_image"
tools:layout_constraintBottom_creator="1"
tools:layout_constraintRight_creator="1"
/>
<Android.support.constraint.Guideline
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:id="@+id/guideline29"
Android:orientation="vertical"
app:layout_constraintGuide_percent="0.5"/>
<Android.support.constraint.Guideline
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:id="@+id/guideline30"
app:layout_constraintGuide_begin="395dp"
Android:orientation="vertical"/>
<Android.support.constraint.Guideline
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:id="@+id/guideline37"
app:layout_constraintGuide_begin="8dp"
Android:orientation="horizontal"/>
</Android.support.constraint.ConstraintLayout>
Comment puis-je faire en sorte que le texte TextView
appelé street_name
ne sorte pas de l'écran? J'utilise le MaterialDrawer mais je ne pense pas que cela a quelque chose à voir avec cela. L'appareil est Samsung Note 4 ayant Android 6.0.1. Utilisation de la version com.Android.support.constraint:constraint-layout:1.0.2
de ConstraintLayout dans Android Studio 2.3.3
Définissez Android:layout_width="0dp"
pour street_name
. Cela le fera correspondre aux contraintes et devrait le garder dans les limites.
Ne fonctionne pas? street_name
est limité à droite par guideline30
à 395dp
. Est-ce que 395dp
est à droite de votre écran?
Ajouter le layconstraintEnd_toEndOf
app: layout_constraintEnd_toEndOf = "parent"
et largeur 0dp
Android: layout_width = "0dp"
Définir la largeur 0dp seul ne fonctionnera pas
Utilisez app:layout_constraintEnd_toEndOf
au lieu de app:layout_constraintRight_toRightOf
De plus Beacuse Right_otRight peut ne pas s'afficher correctement dans certaines situations.
Et utilisez Start_toStartOf
au lieu de Left_toLeft
Aussi comme les autres ont dit set Android:layout_width="0dp"
0dp
signifie correspondance contrainte
Pour votre <TextView Android:id="@+id/street_name"...>
, vous devez utiliser Android:layout_width="0dp"
et Android:layout_height="wrap_content"
afin que cela ressemble à:
<TextView
Android:id="@+id/street_name"
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_marginStart="15dp"
Android:text="street name"
Android:textColor="?AppTheme.InformationText"
Android:textSize="14sp"
Android:textStyle="bold"
Android:gravity="center"
Android:layout_marginTop="8dp"
Android:layout_marginRight="8dp"
Android:layout_marginBottom="19dp"
Android:layout_marginLeft="0dp"
app:layout_constraintWidth_default="wrap"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="@+id/guideline29"
app:layout_constraintTop_toTopOf="@+id/guideline37"
app:layout_constraintRight_toLeftOf="@+id/guideline30"
app:layout_constraintHorizontal_bias="0.605"
app:layout_constraintVertical_bias="0.0"/>
EDIT # 1: Je suppose que vous devriez contraindre le côté droit de votre TextView par les parents et non par les directives, c.-à-d. Changer app:layout_constraintRight_toLeftOf="@+id/guideline30"
en app:layout_constraintRight_toRightOf="parent"
En conséquence, vous avez:
<TextView
Android:id="@+id/street_name"
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_marginStart="15dp"
Android:text="street name"
Android:textColor="?AppTheme.InformationText"
Android:textSize="14sp"
Android:textStyle="bold"
Android:gravity="center"
Android:layout_marginTop="8dp"
Android:layout_marginRight="8dp"
Android:layout_marginBottom="19dp"
Android:layout_marginLeft="0dp"
app:layout_constraintWidth_default="wrap"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="@+id/guideline29"
app:layout_constraintTop_toTopOf="@+id/guideline37"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintHorizontal_bias="0.605"
app:layout_constraintVertical_bias="0.0"/>
Attachez simplement TextView à droite et tout ira bien. Lorsque vous utilisez une meilleure pratique de constraintLayout pour attacher une vue à une autre vue ou à un parent, les 4 contraintes doivent être utilisées.