স্পষ্টকরণ: নীচের উত্তরটি বৈধ থাকবে, তবে আমি কয়েকটি বিষয় পরিষ্কার করতে চাই। মূল সমাধানটি উল্লিখিত হিসাবে অন্য মতামতের সাথে সম্মতিযুক্ত ডি ফ্যাকো নেগেটিভ অফসেটের সাথে একটি ভিউ স্থাপন করবে এবং প্রদর্শিত লেআউটে প্রদর্শিত হবে।
আরেকটি সমাধান হ'ল এখানে আমির খোরসান্দি পরামর্শ অনুসারে ট্রান্সলেশনওয়াই সম্পত্তি ব্যবহার করুন । আমি সেই সমাধানটিকে একটি ক্যাভিয়েটের সাথে সহজ হিসাবে পছন্দ করি: অনুবাদটি পোস্ট-লেআউট পরে ঘটে , সুতরাং বাস্তুচ্যুত দৃষ্টিতে সীমাবদ্ধ এমন দর্শনগুলি অনুবাদটি অনুসরণ করে না।
উদাহরণস্বরূপ, নীচের এক্সএমএলটি চিত্রের নীচে দুটি টেক্সটভিউ প্রদর্শন করে। প্রতিটি দৃশ্যের উপরে তত্ক্ষণাত দৃশ্যের সাথে তত্ক্ষণাত প্রদর্শিত হয় view
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView"
android:layout_width="150dp"
android:layout_height="150dp"
android:tint="#388E3C"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_action_droid" />
<TextView
android:id="@+id/sayName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Say my name."
android:textAppearance="@style/TextAppearance.AppCompat.Large"
app:layout_constraintTop_toBottomOf="@+id/imageView"
app:layout_constraintEnd_toEndOf="@+id/imageView"
app:layout_constraintStart_toStartOf="@+id/imageView" />
<TextView
android:id="@+id/sayIt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Say it."
android:textAppearance="@style/TextAppearance.AppCompat.Large"
app:layout_constraintEnd_toEndOf="@+id/sayName"
app:layout_constraintStart_toStartOf="@+id/sayName"
app:layout_constraintTop_toBottomOf="@id/sayName" />
</androidx.constraintlayout.widget.ConstraintLayout>
এখন, নির্দিষ্ট করে "আমার নাম বলুন" পাঠ্য ভিউ অনুবাদ করুন50dp
android:translationY="-50dp"
এটি নিম্নলিখিত উত্পাদন করে:
"আমার নাম বলুন" টেক্সটভিউ প্রত্যাশা অনুসারে স্থানান্তরিত হয়েছে, তবে "এটি বলুন" পাঠ্যদর্শনটি আমাদের প্রত্যাশা অনুযায়ী এটি অনুসরণ করেনি। এর কারণ হল অনুবাদ ঘটে যে পোস্ট-বিন্যাস । যদিও ভিউ পোস্ট-লেআউটটি সরায়, তবুও এটি নতুন অবস্থানে ক্লিকযোগ্য করে তোলা যেতে পারে।
সুতরাং, আইএমও, সঙ্গে যেতে অনুবাদ X এবং translationY ঋণাত্মক মার্জিন জন্য ConstraintLayout যদি সতর্কীকরণ উপরে আপনার লেআউট প্রভাবিত করে না; অন্যথায়, স্পেস উইজেটটি নীচে বর্ণিত হিসাবে যান।
আসল উত্তর
যদিও এটি প্রদর্শিত হচ্ছে না যে নেতিবাচক মার্জিনগুলি সমর্থিত হবে ConstraintLayout
, উপলব্ধ এবং সমর্থিত সরঞ্জামগুলি ব্যবহার করে প্রভাবটি সম্পাদনের একটি উপায় রয়েছে। এখানে একটি চিত্র যেখানে চিত্রের শিরোনামটি চিত্রের 22dp
নীচ থেকে ওভারল্যাপ করা আছে - কার্যকরভাবে একটি -22dp
মার্জিন:
Space
আপনি যে অফসেটটি চান তার সমান নীচে মার্জিন সহ একটি উইজেট ব্যবহার করে এটি সম্পন্ন হয়েছিল । Space
উইজেট তারপর তার নীচে নীচে সীমাবদ্ধ রয়েছে ImageView
। এখন আপনাকে যা করতে হবে তা হল উইজেটের TextView
নীচে চিত্রের শিরোনাম সহ শীর্ষের সীমাবদ্ধ করা Space
। TextView
নীচে স্থান হবে Space
প্রদর্শন মার্জিন যে হয় উপেক্ষা।
নিম্নলিখিত এক্সএমএল যা এই প্রভাবটি সম্পাদন করে। আমি নোট করব যে আমি ব্যবহার করি Space
কারণ এটি হালকা ওজনের এবং এই ধরণের ব্যবহারের উদ্দেশ্যে, তবে আমি অন্য ধরণের ব্যবহার করতে View
এবং এটি অদৃশ্য করে তুলতে পারি। (আপনি সম্ভবত সমন্বয় করতে, যদিও করতে হবে।) এছাড়াও আপনি একটি সংজ্ঞায়িত করতে পারে View
শূন্য মার্জিন এবং আঁটা মার্জিন যদি আপনি চান উচ্চতা সঙ্গে, এবং উপরের সীমাবদ্ধ TextView
আঁটা শীর্ষে View
।
তবুও আরেকটি উপায় হ'ল TextView
উপরের উপরের ImageView
অংশটি উপরে / বোতলস / লেফটস / ডান সারিবদ্ধ করে মার্জিন / প্যাডিংগুলিতে উপযুক্ত সামঞ্জস্য করা। নীচে প্রদর্শিত পদ্ধতির সুবিধাটি হ'ল প্রচুর গণনা ছাড়াই একটি নেতিবাচক মার্জিন তৈরি করা যায়। এটুকু বলতে গেলে এই কাছে যাওয়ার বিভিন্ন উপায় রয়েছে are
আপডেট: এই কৌশলটির তাত্ক্ষণিক আলোচনা এবং ডেমোটির জন্য, Google বিকাশকারী মিডিয়াম ব্লগ পোস্টটি দেখুন ।
ConstraintLayout
এক্সএমএলের জন্য নেতিবাচক মার্জিন
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@mipmap/ic_launcher" />
<android.support.v4.widget.Space
android:id="@+id/marginSpacer"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginBottom="22dp"
app:layout_constraintBottom_toBottomOf="@+id/imageView"
app:layout_constraintLeft_toLeftOf="@id/imageView"
app:layout_constraintRight_toRightOf="@id/imageView" />
<TextView
android:id="@+id/editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Say my name"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/marginSpacer" />
</android.support.constraint.ConstraintLayout>