J'utilise constraintLyout v 1.0.1.
Je voudrais inclure dans mon xml un sous-élément ConstraintLayout correspondant à une partie de ma présentation globale (qui est lui-même un élément ConstraintLayout). Je scinde la mise en page en deux xmls pour utiliser cette sous-partie ailleurs
J'ai essayé cela, mais je n'ai aucun contrôle sur l'endroit où placer la disposition de ma contrainte secondaire dans le parent. Je me demande si je dois tout placer dans le même fichier XML ou si c'est une solution pour utiliser des fichiers séparés.
tmp_1.xml
<Android.support.constraint.ConstraintLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:orientation="vertical"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
>
<TextView
Android:id="@+id/label"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="LABEL1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
Android:layout_marginTop="16dp"
/>
<TextView
Android:id="@+id/label_2"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="LABEL2"
app:layout_constraintStart_toStartOf="@id/label"
app:layout_constraintEnd_toEndOf="@id/label"
app:layout_constraintTop_toBottomOf="@id/label"
Android:layout_marginTop="16dp"
/>
<include layout="@layout/tmp_2" />
</Android.support.constraint.ConstraintLayout>
tmp_2.xml
<Android.support.constraint.ConstraintLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:orientation="vertical"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
>
<TextView
Android:id="@+id/view_80"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="80th element"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
Android:layout_marginTop="10dp"
Android:layout_marginStart="12dp"
/>
</Android.support.constraint.ConstraintLayout>
Le résultat est ceci Résultat actuel
Mais je veux que ce soit ceci Résultat attend
J'ai essayé ça mais ça ne marche pas
<include
app:layout_constraintTop_toBottomOf="@id/label_2"
layout="@layout/tmp_2" />
Je serais heureux d'avoir vos solutions,
Merci
En fait trouvé une solution. Android Studio ne complète pas automatiquement les paramètres de constraintLayout dans une balise include, mais ils ont un impact sur celle-ci tant que vous indiquez une taille.
<include
layout="@layout/tmp_2"
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_marginTop="10dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/label_2"
/>
Pour inclure une disposition de contrainte et la contraindre en fonction de vos besoins, vous devrez donner largeur et hauteur à la disposition incluse comme ceci:
<include
Android:id="@+id/shop_card_layout"
layout="@layout/shop_card_one"
Android:layout_height="wrap_content"
Android:layout_width="300dp"
Android:layout_marginTop="8dp"
app:layout_constraintStart_toStartOf="@id/heading_tv"
app:layout_constraintTop_toBottomOf="@+id/heading_tv" />
Vous pourriez éviter les contraintes ConstraintLayout
au niveau de l'élément d'inclusion. Je viens de <include/>
c'est comme ça.
Fichier de mise en forme MainActivity:
<?xml version="1.0" encoding="utf-8"?>
<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="match_parent">
<include
Android:id="@+id/toolbarLayout"
layout="@layout/layout_toolbar" />
<TextView
Android:id="@+id/textView2"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginBottom="8dp"
Android:layout_marginEnd="8dp"
Android:layout_marginStart="8dp"
Android:layout_marginTop="8dp"
Android:text="CONTENTS"
app:layout_constraintBottom_toBottomOf="@+id/footerLayout"
app:layout_constraintEnd_toEndOf="@+id/footerLayout"
app:layout_constraintStart_toStartOf="@+id/footerLayout"
app:layout_constraintTop_toTopOf="@+id/footerLayout" />
<include
Android:id="@+id/footerLayout"
layout="@layout/layout_footer" />
</Android.support.constraint.ConstraintLayout>
Fichier de disposition de la barre d'outils:
<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="match_parent">
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="@color/colorPrimary"
Android:minHeight="?attr/actionBarSize"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintStart_toStartOf="parent"
Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
<TextView
Android:id="@+id/toolbarTitleTextView"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:text="@string/hidden"
Android:textColor="@Android:color/white"
tools:layout_editor_absoluteX="192dp"
tools:layout_editor_absoluteY="19dp" />
</Android.support.v7.widget.Toolbar>
</Android.support.constraint.ConstraintLayout>
Pour inclure une mise en page de contrainte à une autre mise en page de contraint, utilisez une autre mise en page pour chaque parent de la mise en page d'inclusion ... Comme ci-dessous:
<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="match_parent"
Android:background="@drawable/new_landing_bg"
tools:context=".activity.DesignTestActivity">
<Android.support.constraint.ConstraintLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_marginStart="16dp"
Android:layout_marginEnd="16dp"
Android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<include layout="@layout/common_footer_layout" />
</Android.support.constraint.ConstraintLayout>
c'est un travail sur ma mise en page XML. Profitez du code.