android - সীমাবদ্ধ বিন্যাসে ওভারল্যাপ/নেতিবাচক মার্জিন কীভাবে অর্জন করবেন?




android-constraintlayout constraint-layout-chains (5)

ওভারল্যাপটি অর্জনের জন্য কি বাঁধা লেআউটে নেতিবাচক মার্জিন অর্জন করা সম্ভব? আমি লেআউটটিকে কেন্দ্র করে একটি চিত্র রাখার চেষ্টা করছি এবং একটি টেক্সট ভিউ রাখব যাতে এটি এক্স বাই দিয়ে আড়াআড়ি হয়। আমি নেতিবাচক মার্জিন মান সেট করার চেষ্টা করেছি তবে ভাগ্য নেই। এটি অর্জন করার কোনও উপায় থাকলে এটি দুর্দান্ত হবে।


নেতিবাচক মার্জিনগুলি আনুষ্ঠানিকভাবে রিলেটিভলআউটে কখনও সমর্থন করা যায় নি। নেতিবাচক মার্জিনগুলি কনস্ট্রেন্টলয়েটে সমর্থিত হবে না। [...]

- জুন 8, 2016 এ রোমেন গাই

এই দুটি বিষয় অনুসরণ করুন:

https://code.google.com/p/android/issues/detail?id=212499 https://code.google.com/p/android/issues/detail?id=234866


অন্য উপায় translationY এক্স বা translationY ব্যবহার করছেন:

  <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" 
                android:translationX="25dp"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintBottom_toBottomOf="parent"/>

এটি android:layout_marginRight="-25dp" মতো কাজ করবে android:layout_marginRight="-25dp"


একটি সহজ উপায়।

আমি নিশ্চিত সেরা উপায় না।

লিনিয়ারলআউট ব্যবহার করে কেবল মোড়ানো

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
 <View
 android:layout_width="wrap_content"
 android:layout_marginLeft="-20dp"
 android:layout_height="wrap_content"/>
</LinearLayout>

সমাধান অনুসন্ধানের চেষ্টা করার পরে ঘন্টাখানেক পরে এটি আমি আবিষ্কার করেছি।

আসুন আমরা ইমেজ 1 এবং ইমেজ 2 দুটি চিত্র বিবেচনা করি। চিত্র 2 নীচে-ডানদিকে অবস্থিত চিত্র 1 এর শীর্ষে স্থাপন করতে হবে।

ওভারল্যাপিং দর্শন উদাহরণ

ওভারল্যাপিং দর্শনগুলির জন্য আমরা স্পেস উইজেট ব্যবহার করতে পারি।

চিত্র 1 এর চার পাশের সাথে যথাক্রমে স্পেস উইজেটের চার পাশ সীমাবদ্ধ করুন। এই উদাহরণস্বরূপ, স্পেস উইজেটের ডান পাশ এবং চিত্র 2 এর উপরের অংশটি স্পেস উইজেটের নীচের দিকের সাথে চিত্র 2 এর বাম দিকটি সীমাবদ্ধ করুন। এটি স্পেস উইজেটের সাথে ইমেজ 2 বেঁধে দেবে এবং যেহেতু স্পেস উইজেটটি সমস্ত পক্ষ থেকে সীমাবদ্ধ, তাই আমরা প্রয়োজনীয় অনুভূমিক বা উল্লম্ব পক্ষপাত নির্ধারণ করতে পারি যা চিত্র 2 প্রয়োজনীয় হিসাবে সরানো হবে।

<?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=".Player">
 <ImageView
     android:id="@+id/image1"
     android:layout_width="250dp"
     android:layout_height="167dp"
     android:src="@android:color/holo_green_dark"
     app:layout_constraintEnd_toEndOf="parent"
     app:layout_constraintStart_toStartOf="parent"
     app:layout_constraintTop_toTopOf="parent" />
 <Space
     android:id="@+id/space"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     app:layout_constraintBottom_toBottomOf="@+id/image1"
     app:layout_constraintEnd_toEndOf="@+id/image1"
     app:layout_constraintHorizontal_bias="0.82"
     app:layout_constraintStart_toStartOf="@+id/image1"
     app:layout_constraintTop_toTopOf="@+id/image1"
     app:layout_constraintVertical_bias="0.62" />
 <ImageView
     android:id="@+id/image2"
     android:layout_width="82dp"
     android:layout_height="108dp"
     android:src="@android:color/holo_green_light"
     app:layout_constraintStart_toEndOf="@+id/space"
     app:layout_constraintTop_toBottomOf="@+id/space" />
 </android.support.constraint.ConstraintLayout>

তদ্ব্যতীত, চিত্র 1 এর কেন্দ্র-নীচে ইমেজ 2 এ অবস্থান করতে, আমরা স্পেস উইজেটের বাম এবং ডান দিকগুলি যথাক্রমে চিত্র 2 এর বাম এবং ডানদিকে সীমাবদ্ধ করতে পারি। একইভাবে, আমরা স্পেস উইজেটের সাথে চিত্র 2 এর সীমাবদ্ধতাগুলি পরিবর্তন করে যেকোন জায়গায় ইমেজ 2 স্থাপন করতে পারি।


এটি অনেককে সাহায্য করবে

আমার ক্ষেত্রে আমি আমার ডিজাইনটি এটির মতো চাই:

এর অর্থ আমি চাই যে আমার চিত্রটি তাদের প্রস্থের অর্ধেক প্রদর্শিত হবে তাই মূলত আমার প্রকৃত চিত্রের প্রস্থের অর্ধেকের নেতিবাচক মার্জিনের প্রয়োজন তবে সীমাবদ্ধ বিন্যাস এবং সীমাবদ্ধ বিন্যাসে আমার সম্পূর্ণ বিন্যাসটি নেতিবাচক মার্জিনের অনুমতি দেয় না তাই নীচের কোড দিয়ে আমি এটি অর্জন করেছি

<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:scaleType="centerCrop"
        android:src="@drawable/ic_launcher_background"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@id/guideline"
        app:layout_constraintTop_toTopOf="parent" />

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_begin="50dp" />
</androidx.constraintlayout.widget.ConstraintLayout>

যাতে ইমেজভিউ গাইডলাইনটির শুরুতে শেষ হবে। এবং প্রভাব 50dp শুরুতে নেতিবাচক মার্জিনের মতো একই।

এছাড়াও যদি আপনার দর্শনের প্রস্থ স্থির না করা হয় এবং এটি শতাংশে থাকে যাতে আপনি শতাংশের সাথে গাইডলাইন স্থাপন করতে পারেন এবং আপনি যা চান তার প্রভাব অর্জন করতে পারেন

শুভ কোডিং :)





constraint-layout-chains