स्पष्टीकरण: नीचे दिया गया उत्तर मान्य है, लेकिन मैं कुछ चीजों को स्पष्ट करना चाहता हूं। मूल समाधान एक दृश्य को वास्तविक दृश्य के साथ एक वास्तविक दृश्य के साथ नकारात्मक ऑफसेट के साथ रखा जाएगा और जैसा कि दिखाया गया है लेआउट में दिखाई देगा।
एक और उपाय है कि अमीर खोरसंडी द्वारा सुझाई गई अनुवाद संपत्ति का उपयोग करें । मैं उस समाधान को एक चेतावनी के साथ सरल पसंद करता हूं: अनुवाद पोस्ट-लेआउट होता है , इसलिए विस्थापित दृश्य के लिए विवश किए गए विचार अनुवाद का पालन नहीं करेंगे।
उदाहरण के लिए, निम्न XML छवि के नीचे दो TextViews प्रदर्शित करता है । प्रत्येक दृश्य उस दृश्य के साथ ऊपर से नीचे की ओर विवश होता है जो इसके ठीक ऊपर दिखाई देता है।

<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>
अब, चलो "मेरा नाम कहो" का अनुवाद करते हैं TextView द्वारा 50dpनिर्दिष्ट द्वारा
android:translationY="-50dp"
यह निम्नलिखित उत्पादन करता है:

"मेरा नाम कहो" TextView अपेक्षा के अनुसार शिफ्ट हो गया है, लेकिन "Say it" TextView ने इसका पालन नहीं किया है जैसा कि हम उम्मीद कर सकते हैं। ऐसा इसलिए है क्योंकि अनुवाद पोस्ट-लेआउट होता है । हालाँकि यह दृश्य पोस्ट-लेआउट को स्थानांतरित करता है, फिर भी इसे नई स्थिति में क्लिक करने योग्य बनाया जा सकता है।
तो, IMO, साथ जाना translationX और translationY में नकारात्मक हाशिए के लिए ConstraintLayout यदि चेतावनी के ऊपर अपने लेआउट प्रभावित नहीं करता; अन्यथा, अंतरिक्ष विजेट के साथ नीचे उल्लिखित के रूप में जाना ।
मूल उत्तर
यद्यपि यह प्रकट नहीं होता है कि नकारात्मक मार्जिन का समर्थन किया जाएगा ConstraintLayout, लेकिन उपलब्ध और समर्थित उपकरणों का उपयोग करके प्रभाव को पूरा करने का एक तरीका है। यहां एक छवि है जहां छवि शीर्षक छवि 22dpके नीचे से ओवरलैप किया गया है - प्रभावी रूप से एक -22dpमार्जिन:

यह Spaceउस ऑफसेट के बराबर विजेट के साथ एक विजेट का उपयोग करके पूरा किया गया, जो आप चाहते हैं। Spaceविजेट तो इसकी तल के नीचे करने के लिए विवश है ImageView। अब आपको बस इतना करना होगा TextViewकि इमेज टाइटल के साथ Spaceविजेट के निचले भाग में ऊपर को कसना है। TextViewके तल पर तैनात किया जाएगा Spaceदृश्य मार्जिन कि स्थापित किया गया था अनदेखी।
निम्नलिखित एक्सएमएल है जो इस प्रभाव को पूरा करता है। मैं ध्यान दूंगा कि मैं इसका उपयोग करता हूं Spaceक्योंकि यह इस प्रकार के उपयोग के लिए हल्का और इरादा है, लेकिन मैं दूसरे प्रकार का उपयोग कर सकता था Viewऔर इसे अदृश्य बना सकता था। (आप शायद समायोजन करने के लिए, हालांकि की आवश्यकता होगी।) तुम भी एक निर्धारित कर सकते हैं Viewशून्य मार्जिन और इनसेट मार्जिन आप चाहते हैं की ऊंचाई के साथ, और के शीर्ष विवश TextViewइनसेट के शीर्ष करने के View।
फिर भी एक और दृष्टिकोण ओवरले करने के लिए किया जाएगा TextViewके शीर्ष पर ImageViewसंरेखित सबसे ऊपर / नीचे / lefts / सही और मार्जिन के लिए उपयुक्त समायोजन करने / गद्दी से। नीचे प्रदर्शित दृष्टिकोण का लाभ यह है कि बहुत अधिक गणना के बिना एक नकारात्मक मार्जिन बनाया जा सकता है। यह सब कहना है कि इसके लिए कई तरीके हैं।
अपडेट: इस तकनीक की त्वरित चर्चा और डेमो के लिए, Google डेवलपर्स मीडियम ब्लॉग पोस्ट देखें ।
ConstraintLayoutXML के लिए नकारात्मक मार्जिन
<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>