2017-09-21 12 views
2

Comme vous le voyez sur l'image, le texte est hors du mur. Ceci est un comportement bizarre et je pense que c'est un bugAndroid ConstraintLayout TextView quitter l'écran

shoot écran Voici un:

enter image description here

Here's le xml d'en-tête:

<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 le TextView appelé street_name le texte ne va pas l'écran externe? J'utilise le MaterialDrawer mais je ne pense pas que cela ait quelque chose à voir avec ça. L'appareil est au format Samsung Note 4 ayant Android 6.0.1. En utilisant la version ConstraintLayout com.android.support.constraint:constraint-layout:1.0.2 dans Android 2.3.3

studio

Répondre

4

Set android:layout_width="0dp" pour street_name. Cela le fera correspondre à des contraintes et devrait le garder dans les limites.

Ne fonctionne pas? street_name est contraint sur la droite par guideline30 à 395dp. Est-ce que 395dp est à droite de votre écran?

+0

nop ne fonctionne pas – Erik

+0

@ Erik Mise à jour de réponse. – Cheticamp

+0

cela ne fonctionne pas 'android: layout_width =" 0dp "' est défini. Où avez-vous obtenu le 359dp? – Erik

0

Pour votre <TextView android:id="@+id/street_name"...> vous devez utiliser android:layout_width="0dp" et android:layout_height="wrap_content" pour qu'il 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 contrainte côté droit de votre TextView par parent, pas par directive, c.-à-d. changer app:layout_constraintRight_toLeftOf="@+id/guideline30" à app:layout_constraintRight_toRightOf="parent". Par conséquent, 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

nop ne fonctionne pas. pensé pour un moment que 'android: gravité =" centre "' était le joker mais pas – Erik

+0

@ Erik Voir mon "Edit # 1" ci-dessus ... –

0

Fixez simplement TextView sur le côté droit et tout va bien. Lorsque vous utilisez une meilleure pratique pour attacher une vue à une autre vue ou à un autre parent, les quatre contraintes doivent être utilisées.