android - প্রতিবন্ধক লেআউটে বাধা এবং গাইডলাইনের মধ্যে পার্থক্য কী?




android-constraintlayout (2)

সম্প্রতি Constraint Layout বাস্তবায়নের চেষ্টা করা হয়েছে তবে আমি দেখতে পেয়েছি Barrier এবং Guideline একই কাজ করে। দুটোই ডিভাইডারের মতো কাজ করে। তাদের মধ্যে কি কোনও পার্থক্য আছে?


বাধা সম্পর্কিত সরকারী ডকুমেন্টেশন :

একটি বাধা একাধিক উইজেটগুলিকে ইনপুট হিসাবে উল্লেখ করে এবং নির্দিষ্ট দিকে সর্বাধিক চরম উইজেটের উপর ভিত্তি করে একটি ভার্চুয়াল গাইডলাইন তৈরি করে। উদাহরণস্বরূপ, একটি বাম বাধা সমস্ত রেফারেন্স করা দর্শনগুলির বামে সারিবদ্ধ করবে।

প্রতিবন্ধক উপর প্রশিক্ষণ ডক্স :

গাইডলাইনের অনুরূপ, বাধা হ'ল একটি অদৃশ্য রেখা যা আপনি দর্শনকে সীমাবদ্ধ রাখতে পারেন। বাধা ব্যতীত তার নিজস্ব অবস্থান নির্ধারণ করে না; পরিবর্তে, এর মধ্যে থাকা দর্শনগুলির অবস্থানের ভিত্তিতে বাধা অবস্থানটি সরানো হয়। আপনি যখন একটি নির্দিষ্ট দৃশ্যের চেয়ে দৃশ্যের সেটগুলিতে সীমাবদ্ধ রাখতে চান তখন এটি কার্যকর।


ব্যারিয়ার ব্যবহার করার সময়

বলুন আপনার গতিশীল উচ্চতা সহ দুটি TextView উইজেট রয়েছে এবং আপনি দীর্ঘতম TextView ঠিক নীচে একটি Button রাখতে চান:

সরাসরি লেআউটে এটি বাস্তবায়নের একমাত্র উপায় একটি অনুভূমিক Barrier ব্যবহার করা। এই Barrier আপনাকে সেই দুটি TextView উচ্চতার উপর ভিত্তি করে একটি সীমাবদ্ধতা নির্দিষ্ট করতে দেয়। তারপরে আপনি আপনার Button শীর্ষটি অনুভূমিক বাধার নীচে সীমাবদ্ধ রাখুন।

<?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"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/left_text_view"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        android:textSize="16sp"
        android:background="#AAA"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/right_text_view"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/right_text_view"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginEnd="8dp"
        android:text="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
        android:textSize="16sp"
        android:background="#DDD"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/left_text_view"
        app:layout_constraintTop_toTopOf="parent" />

    <android.support.constraint.Barrier
        android:id="@+id/barrier"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:barrierDirection="bottom"
        app:constraint_referenced_ids="left_text_view,right_text_view" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:text="Button"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="@+id/barrier" />

</android.support.constraint.ConstraintLayout>

নির্দেশিকা কখন ব্যবহার করবেন

বলুন যে আপনি উপরে উল্লিখিত TextView উচ্চতাগুলি স্ক্রিনের উচ্চতার 30% পর্যন্ত সীমাবদ্ধ রাখতে চান, তাদের কাছে যে বিষয়বস্তুই নেই।

এটি বাস্তবায়নের জন্য আপনার শতাংশের অবস্থানের সাথে অনুভূমিক Guideline যুক্ত করা উচিত এবং সেই Guideline TextView নীচে সীমাবদ্ধ করা উচিত।

<?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"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/left_text_view"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:background="#AAA"
        android:text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        android:textSize="16sp"
        app:layout_constraintBottom_toTopOf="@+id/guideline"
        app:layout_constraintEnd_toStartOf="@+id/right_text_view"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/right_text_view"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginBottom="8dp"
        android:background="#DDD"
        android:text="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
        android:textSize="16sp"
        app:layout_constraintBottom_toTopOf="@+id/guideline"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/left_text_view"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:text="Button"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="@+id/guideline" />

    <android.support.constraint.Guideline
        android:id="@+id/guideline"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_percent="0.3" />

</android.support.constraint.ConstraintLayout>

উপসংহার

Barrier এবং Guideline মধ্যে একমাত্র পার্থক্য হ'ল Barrier অবস্থানটি নমনীয় এবং সর্বদা এর মধ্যে থাকা একাধিক ইউআই উপাদানগুলির আকারের উপর ভিত্তি করে এবং Guideline অবস্থান সর্বদা স্থির থাকে।





android-constraintlayout