web-dev-qa-db-fra.com

Android ConstraintLayout TextView disparaît de l'écran

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:

 enter image description here

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

8
Erik

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?

16
Cheticamp

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

5
Saini Arun

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

0
Yang.L

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"/>
0
Eugene Brusov

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.

0
Kirill Bitkov