web-dev-qa-db-fra.com

Android ConstraintLayout Margins ne fonctionne pas correctement

Comme on le voit sur l'image, les zones d'affichage sont rendues à la position actuelle, mais pas le contenu. Les vues de texte ainsi que les vues d'image sont rendues comme s'il n'y avait pas de marges. Lorsque je lance l'application, ils ne rendent pas non plus correctement (deuxième image). Je ne sais pas ce qui pourrait en être la cause . Editor Preview Live Demo

EDIT: j'ai oublié d'inclure mon xml:

<?xml version="1.0" encoding="utf-8"?>
<com.example.Android.stundenplanexample.dynamic_recyclerview.ExpandingCardView
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools"
    xmlns:card_view="http://schemas.Android.com/apk/res-auto"
    Android:id="@+id/card_view"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    card_view:cardCornerRadius="2dp"
    card_view:cardElevation="2dp"
    Android:layout_margin="12dp">

    <Android.support.constraint.ConstraintLayout
        Android:id="@+id/constraint"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content">

        <ImageView
            Android:layout_margin="8dp"
            Android:layout_width="24dp"
            Android:layout_height="24dp"
            Android:layout_weight="0"
            Android:src="@drawable/ic_expand_more_black_24dp"
            Android:id="@+id/card_expand_toggle"
            tools:ignore="ContentDescription"
            Android:layout_marginTop="16dp"
            card_view:layout_constraintTop_toTopOf="parent"
            card_view:layout_constraintRight_toRightOf="parent"
            Android:layout_marginEnd="24dp" />

        <TextView
            Android:layout_margin="8dp"
            Android:layout_weight="1"
            Android:textAppearance="@Android:style/TextAppearance.Material.Medium"
            Android:textColor="?android:attr/textColorPrimary"
            Android:layout_width="42dp"
            Android:layout_height="wrap_content"
            Android:text="@string/card_expand_string"
            Android:id="@+id/textView3"
            card_view:layout_constraintTop_toTopOf="parent"
            Android:layout_marginStart="16dp"
            card_view:layout_constraintLeft_toLeftOf="parent"
            Android:layout_marginTop="16dp" />

        <TextView
            Android:layout_height="wrap_content"
            Android:id="@+id/extra_information"
            Android:layout_width="wrap_content"
            tools:text="ToleToleToleInfo"
            card_view:layout_constraintLeft_toLeftOf="@+id/textView3"
            Android:layout_marginTop="8dp"
            card_view:layout_constraintTop_toBottomOf="@+id/textView3"
            card_view:layout_constraintBottom_toBottomOf="parent"
            Android:layout_marginBottom="16dp" />
    </Android.support.constraint.ConstraintLayout>

</com.example.Android.stundenplanexample.dynamic_recyclerview.ExpandingCardView>
6
BBotMerlin

Je vois un problème précis et un problème potentiel.

Le problème définitif est que votre textView3 spécifie ces attributs:

Android:layout_margin="8dp"
Android:layout_marginTop="16dp"
Android:layout_marginStart="16dp"

Cela ne règle pas le début/la fin sur 16dp et la fin/le bas sur 8dp. Cela entraîne simplement que les attributs marginTop et marginStart sont ignorés.

Le problème potentiel est que vous spécifiez 

Android:layout_marginStart="16dp"

mais ne spécifiez pas également marginLeft. Si vous souhaitez prendre en charge les périphériques pré-API 17, vous devez spécifier à la fois marginStart et marginLeft (en supposant que vous supprimiez l'attribut margin).

1
Ben P.