شرح المخطط Constraint Layout في الاندرويد

شرح Constraint Layout  مع مثال في Android Studio خطوة بخطوة

مخطط Constraint Layout  هو ViewGroup (أي عرض يحتوي على طرق عرض أخرى) والذي يسمح لك بإنشاء تخطيطات كبيرة ومعقدة باستخدام تسلسل هرمي للعرض المسطح ، كما يسمح لك بوضع عناصر واجهة المستخدم وحجمها بطريقة مرنة للغاية. تم إنشاؤه للمساعدة في تقليل تداخل طرق العرض وكذلك تحسين أداء ملفات التخطيط.

مثال على تخطيط القيد في Android Studio مثال على تخطيط Constraint Layout  في Android Studio

ConstraintLayout مشابه جدًا لـ RelativeLayout بهذه الطريقة لأنه يتم وضع طرق العرض وفقًا للعلاقات بين وجهات نظر الأخوة والتخطيط الرئيسي ، ومع ذلك فهي أكثر مرونة وتعمل بشكل أفضل مع محرر التخطيط في Android Studio. تم إصداره في Google I / O 2016. منذ ظهوره (على سبيل المثال في Android studio 2.3) ، أصبح مجموعة مشاهدة مستخدمة على نطاق واسع ويدعم Android 2.3 أو أعلى.


مزايا تخطيط Constraint Layout  على التخطيطات الأخرى

1. تتمثل إحدى الميزات الرائعة لتخطيط القيد في أنه يمكنك إجراء رسوم متحركة على طرق عرض ConstraintLayout باستخدام القليل جدًا من التعليمات البرمجية.
2. يمكنك إنشاء تخطيطك الكامل باستخدام السحب والإفلات البسيط في محرر تصميم Android Studio .
3. يمكنك التحكم في ما يحدث لمجموعة من عناصر واجهة المستخدم من خلال سطر واحد من التعليمات البرمجية.
4. تخطيط Constraint Layout  يعمل على تحسين الأداء مقارنة بالتخطيط الآخر


باستخدام مخطط القيد في Android Studio :

لم يتم تجميعه كجزء من Android SDK ومتوفر كمكتبة دعم. نتيجة لذلك ، سيكون أي تحديث في المستقبل متوافقًا مع جميع إصدارات Android.

لاستخدام مخطط Constraint Layout  ، تأكد من إعلان المستودع أدناه في ملف build.gradle

  
  repositories {
    maven {
	url 'https://maven.google.com'
    }
	}

الآن لاستخدام ميزات ConstraintLayout في مشروع android الخاص بنا ، سنحتاج إلى إضافة المكتبة إلى قسم تبعيات وحدة التطبيق build.gradle.
افتح build.gradle (تطبيق الوحدة النمطية) وأضف الكود أدناه:

  
 dependencies {
    compile 'com.android.support.constraint:constraint-layout:1.1.0-beta3'
	}
  

وضع التصميم أو المخطط في Android Studio :

في Android Studio ، تمت إضافة تصميم ووضع المخطط الذي يعرض تصميم التخطيط في وضع التصميم والمخطط. يمكنك تمكين أي وضع أو كليهما معًا وفقًا لمتطلباتك.

ملاحظة مهمة : لمساعدتك على فهم ConstraintLayout ، سنعمل على تمكين (وضع التصميم والمخطط) لهذا البرنامج التعليمي.

تصميم واستوديو اندرويد وضع المخطط Constraint Layout تصميم واستوديو android وضع المخطط


فهم المقابض أو نقاط الربط في تخطيط القيد :

لنفترض أنك تقوم بسحب عنصر TextView في محرر ConstraintLayout المرئي في Android Studio . فور السحب ، ستلاحظ خطأ في رسالة ، "هذا العرض ليس مقيدًا ..." لذا هذا يعني ببساطة أن العرض الذي أنشأناه ليس مقيدًا وعلينا إصلاحه. إذا لم نصلحها ، فلن يتم عرض العرض بشكل صحيح عند تشغيله في التطبيق.

عرض غير مقيد android studio ConstraintLayout عرض غير مقيد android studio ConstraintLayout

الآن أحوم حول الزر ، يمكنك رؤية نقاط مختلفة يمكن تسميتها كمقابض أو نقاط ربط في مخطط القيد.

التعامل مع نقطة الربط تخطيط Android Studio

انقر فوق أي مقبض واسحبه لإجراء اتصال مع شيء آخر حوله .

ملاحظة مهمة : ستحتاج إلى إجراء اتصالين على الأقل من المقابض بشيء آخر لجعله مقيدًا. وبهذه الطريقة يمكنك إنشاء مقيدة.

التعامل مع القيد تخطيط Android Studio

مقبض تغيير الحجم - لتغيير حجم العرض ، يمكنك استخدام مقبض تغيير الحجم الموجود في الزوايا والذي يحافظ على القيد كما هو. ما عليك سوى سحبها وتغيير حجمها وفقًا لمتطلبات واجهة مستخدم التطبيق.

تغيير حجم مقبض Constraint Layout  التخطيط

المقبض الجانبي - المقبض الجانبي عبارة عن مقبض دائري يستخدم لضبط القيود العلوية واليسرى والسفلية واليمنى للرؤية.

ضبط المقبض الجانبي ضبط المقبض الجانبي Constraint Layout


نافذة السمة للتخطيط Constraint Layout : 

على الجانب الأيمن ، ستلاحظ نافذة السمات التي تشارك الكثير من التفاصيل حول طرق العرض التي استخدمناها للعرض في ConstraintLayout .

يمكنك التحكم في حجم العنصر بالنقر فوق 4 أسهم جانبية لتغيير wrap_content إلى match_constrained ، وحجم ثابت ، إلخ.

يحدد الانحياز عرض موضع بين قيودها على المحور. بشكل افتراضي يتم تعيينه بنسبة 50٪ ويمكن تغييره بسهولة عن طريق السحب.

ملاحظة هامة: يتحامل من الصعب تحقيقه في الخطية تخطيط ، بالنسبة تخطيط الخ

قيد سمة النافذة تخطيط android studio قيد خاصية النافذة تخطيط android studio

حذف القيد في المخطط Constraint Layout :

لحذف الاتصال المقيد ، ما عليك سوى النقر فوق نقطة المقبض وهذا كل شيء.

حذف تخطيط القيد المقيّد Android Studio حذف تخطيط القيد المقيّد Constraint Layout  Constraint Layout Android Studio

أدوات مختلفة في Constraint Layout  :

يمكنك أيضًا استخدام أدوات مثل Autoconnect للسماح لـ Android Studio بإجراء اتصال تلقائي للعرض ، ومسح جميع القيود لحذف جميع القيود دفعة واحدة واستنتاج القيد لتحديد قيودنا تلقائيًا لجميع المشاهدات على الشاشة.

Tools-In-ConstraintLayout-Android-Studio Tools-In-ConstraintLayout-Android-Studio


الموضع النسبي في Constraint Layout :

تحديد المواقع النسبي هو أهم نوع من تخطيط القيد ويعتبر بمثابة بناء الكتلة الأساسية فيه. خيار القيد المختلف الذي يقدمه يعمل فيما يتعلق / بالنسبة لموضع بعضهم البعض. تعمل هذه المواضع النسبية فقط في المحور الرأسي والأفقي.

باستخدام المحور الأفقي ، يمكنك تعيين موضع عنصر واجهة مستخدم واحد في الجوانب اليمنى واليسرى والنهائية والبدء من عنصر واجهة مستخدم آخر. أثناء استخدام المحور الرأسي ، يمكنك تعيين الجوانب السفلية والعليا والخط الأساسي للنص.

دعنا الآن نفهم المفهوم من خلال أخذ مثال. في المثال أدناه ، سننشئ نصي TextView . في TextView الأول ، سنكتب Hello وفي الثانية سنكتب AbhiAndroid. سنقوم بتعيين موضع "AbhiAndroid" على يسار "Hello" ولكن في الجانب الأيمن. فيما يلي رمز XML :

يعني القيد هنا أن النظام سيحاول مشاركة نفس الموقع مع كلا الجانبين. يعتبر textview1 هو الجانب الأيسر من textview2 ليتم تقييده على الجانب الأيمن من textview1.

  
  <?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"
    tools:context=".MainActivity">

    <TextView
	android:id="@+id/textview1"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:text="Hello "/>

    <TextView
	android:id="@+id/textview2"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	app:layout_constraintLeft_toRightOf="@id/textview1"
	android:text="AbhiAndroid"/>
	</android.support.constraint.ConstraintLayout>

ملاحظة مهمة: لتحديد موضع عرض في ConstraintLayout ، يجب إضافة قيد أفقي واحد على الأقل وقيد رأسي واحد إلى طريقة العرض. يحدد كل قيد موضع العرض على طول المحور الرأسي أو الأفقي ؛ لذلك يجب أن يحتوي كل عرض على قيد واحد على الأقل لكل محور ، ولكن غالبًا ما يكون هناك المزيد من القيود. هناك عدة أنواع من القيود. على وجه الخصوص ، فيما يلي بعض القيود التي يمكن استخدامها لتعيين مركز متعلق بعنصر آخر:

layout_constraintLeft_toLeftOf: يتم وضع الحد الأيسر للعنصر بالنسبة للحدود اليسرى لعنصر آخر

layout_constraintLeft_toRightOf: يتم وضع الحد الأيسر للعنصر بالنسبة للحدود اليمنى لعنصر آخر

layout_constraintRight_toLeftOf: يتم وضع الحد الأيمن للعنصر بالنسبة للحدود اليسرى لعنصر آخر

layout_constraintRight_toRightOf: يتم وضع الحد الأيمن للعنصر بالنسبة للحدود اليمنى لعنصر آخر.

سلاسل في القيد التخطيط:

تسمح لنا السلاسل بالتحكم في المسافة بين العناصر وسلاسل جميع العناصر المحددة إلى أخرى.

لإنشاء سلسلة ، حدد العناصر التي تريد أن تشكل جزءًا من السلسلة ، ثم انقر بزر الماوس الأيمن - "سلسلة" - "إنشاء سلسلة أفقية أو رأسية".

سلاسل في تخطيط القيد Android Studio سلاسل في تخطيط القيد Android Studio

يتم توزيع نمط السلسلة المختلفة المتاحة ، وانتشارها داخليًا وتعبئتها.

نمط سلسلة القيد تخطيط android studio نمط سلسلة القيد تخطيط android studio

يمكنك عمل كل من السلسلة الأفقية أو الرأسية في نفس الوقت.

يختلف XML لإنشاء سلسلة من حيث أن جميع العروض لها قيود محددة عليها وأن العنصر الأول في السلسلة يحدد chainStyle.

يوجد أدناه مثال على كود XML لاستخدام السلاسل في مخطط القيد

  
  <?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"
    tools:context=".MainActivity"
    tools:layout_editor_absoluteY="81dp">

    <Button
	android:id="@+id/button5"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:layout_marginBottom="8dp"
	android:layout_marginTop="8dp"
	android:text="Button"
	app:layout_constraintBottom_toBottomOf="parent"
	app:layout_constraintEnd_toStartOf="@+id/button6"
	app:layout_constraintHorizontal_bias="0.5"
	app:layout_constraintHorizontal_chainStyle="spread"
	app:layout_constraintStart_toStartOf="parent"
	app:layout_constraintTop_toTopOf="parent" />

    <Button
	android:id="@+id/button6"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:layout_marginBottom="8dp"
	android:layout_marginTop="8dp"
	android:text="Button"
	app:layout_constraintBottom_toBottomOf="parent"
	app:layout_constraintEnd_toEndOf="parent"
	app:layout_constraintHorizontal_bias="0.5"
	app:layout_constraintStart_toEndOf="@+id/button5"
	app:layout_constraintTop_toTopOf="parent" />
	</android.support.constraint.ConstraintLayout>

استخدام المبادئ التوجيهية لتصميم التخطيط في مخطط Constraint Layout

يمكنك استخدام الإرشادات لتحديد أي إرشادات رأسية أو أفقية أثناء تصميم تخطيط التطبيق الخاص بك. سيساعدك هذا على إجراء اتصال مقيد بوجهة النظر للمبادئ التوجيهية وتخطيط التصميم مع مراعاة التوجيهات.

توجيهات تخطيط القيد Android Studio توجيهات تخطيط Constraint Layout  Android Studio

ملاحظة مهمة: عند تغيير الهامش أو النسبة المئوية للدليل الإرشادي ، سيتغير أيضًا تلقائيًا لجميع طرق العرض المتصلة أيضًا.


أبعاد النسبة المئوية في القيد التخطيط:

و في المئة قيمة القيد Width_default، تسمح لنا لوضع القطعة على اتخاذ بعض نسبة المساحة المتوفرة.

<!-- the widget will take 80% of the available space -->

	app:layout_constraintWidth_default="percent"
	app:layout_constraintWidth_percent="0.8"

الحواجز في القيد

و الحواجز عادة تجنب واحد أو أكثر من الحاجيات / العناصر لتجاوز ذلك. عندما يحاول عنصر واجهة المستخدم المرور عبره ، فإن الحاجز يتحرك بنفسه ، ويتجنب وضع الأداة فوقه.

العوائق في ConstraintLayout Android Studio العوائق في ConstraintLayout Android Studio

يوجد أدناه مثال على كود XML لاستخدام الحواجز في ConstraintLayout

  
  <?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"
    tools:context=".MainActivity"
    tools:layout_editor_absoluteY="81dp">


    <Button
	android:id="@+id/button13"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:layout_marginStart="8dp"
	android:layout_marginTop="8dp"
	android:text="Button"
	app:layout_constraintStart_toStartOf="parent"
	app:layout_constraintTop_toTopOf="parent" />

    <TextView
	android:id="@+id/textView8"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:layout_marginStart="8dp"
	android:layout_marginTop="8dp"
	android:text="Barriers avoid overlapping of elements"
	app:layout_constraintStart_toStartOf="parent"
	app:layout_constraintTop_toBottomOf="@+id/button13" />

    <android.support.constraint.Barrier
	android:id="@+id/barrier8"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	app:barrierDirection="right"
	app:constraint_referenced_ids="button13,textView8"
	tools:layout_editor_absoluteY="511dp" />

    <Button
	android:id="@+id/button14"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:layout_marginStart="8dp"
	android:text="Button"
	app:layout_constraintStart_toEndOf="@+id/barrier8"
	tools:layout_editor_absoluteY="34dp" />
	</android.support.constraint.ConstraintLayout>

المجموعة في Constraint Layout : 

تساعد المجموعة في android على تنفيذ بعض الإجراءات على مجموعة من عناصر واجهة المستخدم مع الحالة الأكثر شيوعًا للتحكم في رؤية مجموعة من عناصر واجهة المستخدم.

عند مواجهة هذا السيناريو ، كان الحل الأكثر شيوعًا هو الاحتفاظ بقائمة أو مجموعة من طرق العرض داخل النشاط أو الجزء ، أو حتى إضافة ViewGroup ووضع جميع العروض بداخلها ، ثم التحكم في رؤية الحاوية. الآن لتنفيذ الإجراء على طرق العرض ، ما عليك سوى إضافة المعرفات الخاصة بهم مثل المعرفات المشار إليها في المجموعة ، وستقوم المجموعة في ConstraintLayout بنشر الإجراءات لجميع طرق العرض المتصلة.

تجميع في تخطيط القيد Android Studio تجميع في تخطيط Constraint Layout  Android Studio

في مثال رمز XML أدناه لاستخدام المجموعات في ConstraintLayout ، قمنا بتعيين الرؤية على زر غير مرئي :

  
  <?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"
    tools:context=".MainActivity"
    tools:layout_editor_absoluteY="81dp">


    <Button
	android:id="@+id/button15"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:text="Button"
	tools:layout_editor_absoluteX="44dp"
	tools:layout_editor_absoluteY="28dp" />

    <Button
	android:id="@+id/button16"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:text="Button"
	tools:layout_editor_absoluteX="89dp"
	tools:layout_editor_absoluteY="118dp" />

    <android.support.constraint.Group
	android:id="@+id/group"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:visibility="invisible"
	app:constraint_referenced_ids="button16,button15" />
	</android.support.constraint.ConstraintLayout>
  

مثال على تخطيط القيد Constraint Layout في Android Studio :

أدناه نقوم بتصميم شاشة تسجيل الدخول البسيطة في مخطط القيد. استخدمنا ImageView و EditText و Button و TextView لتصميم التخطيط أدناه.

القيد التخطيط مثال في Android استوديو القيد التخطيط مثال في Android استوديو

الخطوة 1:  إنشاء مشروع جديد  ConstraintLayout والنشاط الرئيسي النشاط. سنقوم هنا بإنشاء تخطيط القيد:

  
  <?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:id="@+id/constraintLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#80C938">

	</android.support.constraint.ConstraintLayout>

خطوة 2: إضافة وجهات النظر الأخرى ( imageview ، EDITTEXT ، زر وtextview) وذلك بإضافة كل من القيود الأفقية والعمودية لهم:

  
<ImageView
	android:layout_width="146dp"
	android:layout_height="100dp"
	android:src="@drawable/abhi_android"
	android:id="@+id/imageView"
	android:layout_marginTop="96dp"
	app:layout_constraintTop_toTopOf="parent"
	android:layout_marginEnd="16dp"
	app:layout_constraintRight_toRightOf="parent"
	android:layout_marginRight="16dp"
	android:layout_marginStart="16dp"
	app:layout_constraintLeft_toLeftOf="parent"
	android:layout_marginLeft="16dp" />

	<EditText
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:inputType="textPersonName"
	android:ems="10"
	android:id="@+id/editText"
	android:layout_marginStart="16dp"
	android:padding="12dp"
	app:layout_constraintLeft_toLeftOf="parent"
	android:layout_marginLeft="16dp"
	android:layout_marginEnd="16dp"
	app:layout_constraintRight_toRightOf="parent"
	android:layout_marginRight="16dp"
	android:hint="Email"
	android:background="#ffffff"
	android:layout_marginTop="232dp"
	app:layout_constraintTop_toTopOf="parent" />

	<EditText
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:inputType="textPassword"
	android:ems="10"
	android:id="@+id/editText2"
	android:padding="12dp"
	android:background="#ffffff"
	android:layout_marginEnd="16dp"
	app:layout_constraintRight_toRightOf="parent"
	android:layout_marginRight="16dp"
	android:layout_marginStart="16dp"
	app:layout_constraintLeft_toLeftOf="parent"
	android:layout_marginLeft="16dp"
	android:hint="Password"
	android:layout_marginTop="304dp"
	app:layout_constraintTop_toTopOf="parent" />

	<Button
	android:text="SIGN IN"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:background="#00773F"
	android:id="@+id/button1"
	android:layout_marginStart="16dp"
	android:paddingLeft="30dp"
	android:paddingRight="30dp"
	android:textColor="#ffffff"
	app:layout_constraintLeft_toLeftOf="parent"
	android:layout_marginLeft="16dp"
	android:layout_marginEnd="16dp"
	app:layout_constraintRight_toRightOf="parent"
	android:layout_marginRight="16dp"
	android:layout_marginTop="408dp"
	app:layout_constraintTop_toTopOf="parent" />

	<TextView
	android:text="Don't have an account?"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:id="@+id/textView"
	android:layout_marginEnd="16dp"
	app:layout_constraintRight_toRightOf="parent"
	android:layout_marginRight="16dp"
	android:layout_marginStart="16dp"
	android:textColor="#aaffffff"
	app:layout_constraintLeft_toLeftOf="parent"
	android:layout_marginLeft="16dp"
	android:layout_marginTop="480dp"
	app:layout_constraintTop_toTopOf="parent" />
  

الخطوة 3 : كود xml الكامل لمثال مخطط القيد البسيط Constraint Layout :

  
<?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:id="@+id/constraintLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#80C938">

	<ImageView
	android:layout_width="146dp"
	android:layout_height="100dp"
	android:src="@drawable/abhi_android"
	android:id="@+id/imageView"
	android:layout_marginTop="96dp"
	app:layout_constraintTop_toTopOf="parent"
	android:layout_marginEnd="16dp"
	app:layout_constraintRight_toRightOf="parent"
	android:layout_marginRight="16dp"
	android:layout_marginStart="16dp"
	app:layout_constraintLeft_toLeftOf="parent"
	android:layout_marginLeft="16dp" />

    <EditText
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:inputType="textPersonName"
	android:ems="10"
	android:id="@+id/editText"
	android:layout_marginStart="16dp"
	android:padding="12dp"
	app:layout_constraintLeft_toLeftOf="parent"
	android:layout_marginLeft="16dp"
	android:layout_marginEnd="16dp"
	app:layout_constraintRight_toRightOf="parent"
	android:layout_marginRight="16dp"
	android:hint="Email"
	android:background="#ffffff"
	android:layout_marginTop="232dp"
	app:layout_constraintTop_toTopOf="parent" />

    <EditText
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:inputType="textPassword"
	android:ems="10"
	android:id="@+id/editText2"
	android:padding="12dp"
	android:background="#ffffff"
	android:layout_marginEnd="16dp"
	app:layout_constraintRight_toRightOf="parent"
	android:layout_marginRight="16dp"
	android:layout_marginStart="16dp"
	app:layout_constraintLeft_toLeftOf="parent"
	android:layout_marginLeft="16dp"
	android:hint="Password"
	android:layout_marginTop="304dp"
	app:layout_constraintTop_toTopOf="parent" />

    <Button
	android:text="SIGN IN"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:background="#00773F"
	android:id="@+id/button1"
	android:layout_marginStart="16dp"
	android:paddingLeft="30dp"
	android:paddingRight="30dp"
	android:textColor="#ffffff"
	app:layout_constraintLeft_toLeftOf="parent"
	android:layout_marginLeft="16dp"
	android:layout_marginEnd="16dp"
	app:layout_constraintRight_toRightOf="parent"
	android:layout_marginRight="16dp"
	android:layout_marginTop="408dp"
	app:layout_constraintTop_toTopOf="parent" />

    <TextView
	android:text="Don't have an account?"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:id="@+id/textView"
	android:layout_marginEnd="16dp"
	app:layout_constraintRight_toRightOf="parent"
	android:layout_marginRight="16dp"
	android:layout_marginStart="16dp"
	android:textColor="#aaffffff"
	app:layout_constraintLeft_toLeftOf="parent"
	android:layout_marginLeft="16dp"
	android:layout_marginTop="480dp"
	app:layout_constraintTop_toTopOf="parent" />


	</android.support.constraint.ConstraintLayout>

مخرج:

انظر الآن إلى التخطيط في وضع التصميم لرؤية تخطيط شاشة تسجيل الدخول البسيطة التي تم إنشاؤها باستخدام مخطط القيد.


نقاط مهمة حول تخطيط القيد Constraint Layout :

لاستخدام ConstraintLayout ،
i. يجب أن يكون إصدار Android Studio لديك 2.3 أو أعلى.
ثانيا. يجب عليك أولاً تضمين مكتبة دعم ConstraintLayout.
ثالثا. يجب أن يكون لديك قيد واحد رأسي وآخر أفقي على الأقل.

في الختام ، يعتبر ConstraintLayout خيارًا أسرع وأفضل وأكثر فاعلية لتصميم تخطيطات كبيرة وجمالية في واجهة مستخدم Android.