Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

Android में gravity और layout_gravity का अंतर

त्वरित सारांश

विशेषताgravitylayout_gravity
लागू होता हैव्यू के अंदर कंटेंट परव्यू को पेरेंट के अंदर पोजिशन करता है
एनालॉजीबॉक्स के अंदर टेक्स्ट संरेखणकंटेनर में बॉक्स की स्थिति
पेरेंट आवश्यकताकोई विशेष नहींपेरेंट LinearLayout/FrameLayout होना चाहिए

gravity (एंड्रॉइड:ग्रेविटी)

व्यू के आंतरिक कंटेंट को संरेखित करता है। TextView, Button, EditText जैसे व्यूज़ पर लागू होता है जिनके अंदर कंटेंट होता है।

सामान्य मान

<TextView
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:background="#E0E0E0"
    android:gravity="center" />

<!-- अन्य मान -->
android:gravity="top|start"        // ऊपर-बाएं
android:gravity="bottom|end"       // नीचे-दाएं
android:gravity="center_vertical"  // लंबवत केंद्र
android:gravity="center_horizontal" // क्षैतिज केंद्र
android:gravity="fill"             // भरें (टेक्स्ट के लिए कम उपयोगी)
android:gravity="clip_vertical"    // लंबवत क्लिप
android:gravity="clip_horizontal"  // क्षैतिज क्लिप

व्यावहारिक उदाहरण

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp">

    <!-- gravity: कंटेंट संरेखण -->
    <Button
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:background="#2196F3"
        android:gravity="left|center_vertical"
        android:text="गुरुत्वाकर्षण: left|center_vertical"
        android:textColor="#FFF" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:layout_marginTop="8dp"
        android:background="#4CAF50"
        android:gravity="center"
        android:text="गुरुत्वाकर्षण: center"
        android:textColor="#FFF" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:layout_marginTop="8dp"
        android:background="#FF9800"
        android:gravity="right|center_vertical"
        android:text="गुरुत्वाकर्षण: right|center_vertical"
        android:textColor="#FFF" />

</LinearLayout>

layout_gravity (एंड्रॉइड:लेआउट_ग्रेविटी)

व्यू को अपने पेरेंट कंटेनर के अंदर पोजिशन करता है। केवल LinearLayout, FrameLayout, GridLayout जैसे ViewGroup बच्चों पर काम करता है।

LinearLayout में व्यवहार

  • Vertical LinearLayout: horizontal gravity काम करता है (left, center, right)
  • Horizontal LinearLayout: vertical gravity काम करता है (top, center, bottom)
<!-- Vertical LinearLayout: layout_gravity क्षैतिज स्थिति नियंत्रित करता है -->
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="start"
        android:text="Start (बाएं)" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:layout_gravity="center_horizontal"
        android:text="Center Horizontal" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:layout_gravity="end"
        android:text="End (दाएं)" />

</LinearLayout>

FrameLayout में व्यवहार

FrameLayout में layout_gravity दोनों दिशाओं में काम करता है:

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:background="#F5F5F5">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="top|start"
        android:text="Top-Start" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Center" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:text="Bottom-End" />

</FrameLayout>

संयुक्त उदाहरण: दोनों एक साथ

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:orientation="vertical"
    android:background="#E8EAF6"
    android:padding="16dp">

    <!-- पेरेंट में केंद्र, अंदर भी केंद्र -->
    <Button
        android:layout_width="150dp"
        android:layout_height="80dp"
        android:layout_gravity="center_horizontal"
        android:gravity="center"
        android:background="#3F51B5"
        android:text="layout_gravity: center_h\ngravity: center"
        android:textColor="#FFF" />

</LinearLayout>

प्रोग्रामेटिक सेटिंग

// Gravity (कंटेंट संरेखण)
textView.setGravity(Gravity.CENTER);
button.setGravity(Gravity.START | Gravity.CENTER_VERTICAL);

// LayoutParams के माध्यम से layout_gravity
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
    ViewGroup.LayoutParams.WRAP_CONTENT,
    ViewGroup.LayoutParams.WRAP_CONTENT
);
params.gravity = Gravity.END; // या Gravity.CENTER_HORIZONTAL, आदि
view.setLayoutParams(params);

// FrameLayout के लिए
FrameLayout.LayoutParams frameParams = new FrameLayout.LayoutParams(
    ViewGroup.LayoutParams.WRAP_CONTENT,
    ViewGroup.LayoutParams.WRAP_CONTENT
);
frameParams.gravity = Gravity.BOTTOM | Gravity.END;
view.setLayoutParams(frameParams);

सामान्य गलतियाँ

  • ConstraintLayout में layout_gravity: काम नहीं करता! ConstraintLayout में layout_constraintStart_toStartOf, layout_constraintTop_toTopOf, आदि उपयोग करें
  • match_parent के साथ layout_gravity: अगर width/height match_parent है, तो layout_gravity का कोई प्रभाव नहीं (पह से ही भरता है)
  • RelativeLayout: layout_gravity समर्थित नहीं, नियम उपयोग करें (layout_alignParentStart, आदि)

याद रखने का सरल नियम

gravity = "मेरे अंदर क्या है उसे कैसे संरेखित करूं?"
layout_gravity = "मेरे पेरेंट में मुझे कहां रखूं?"

  1. डायरेक्टएक्स 11 और डायरेक्टएक्स 12 में क्या अंतर है? डायरेक्टएक्स 11 और डायरेक्टएक्स 12 में क्या अंतर है?

    डायरेक्टएक्स एपीआई का एक संग्रह है, या एप्लिकेशन प्रोग्रामिंग इंटरफेस, जिसका उपयोग सॉफ्टवेयर द्वारा मल्टीमीडिया सामग्री को रेंडर करने और ग्राफिकल हार्डवेयर के साथ संचार करने के लिए किया जाता है। डायरेक्टएक्स का प्रमुख घटक एपीआई, डायरेक्ट3डी, सॉफ्टवेयर और ग्राफिक्स हार्डवेयर के बीच संचार को संभालता ह

  1. Android में onCreate() और onStart() में क्या अंतर है Android में onCreate() और onStart() में क्या अंतर है

    परिचयएक्टिविटी जीवनचक्र में `onCreate()` और `onStart()` दो महत्वपूर्ण कॉलबैक हैं, लेकिन उनके उद्देश्य और समय अलग-अलग हैं।मुख्य अंतरपहलूonCreate()onStart()कब कॉल होता हैएक्टिविटी पहली बार बनने परएक्टिविटी उपयोगकर्ता को दिखाई देने वाली होती हैआवृत्तिजीवनचक्र में एक बारहर बार एक्टिविटी फोरग्राउंड में आ

  1. एंड्रॉइड में fill_parent (match_parent) और wrap_content में क्या अंतर है? एंड्रॉइड में fill_parent (match_parent) और wrap_content में क्या अंतर है?

    एंड्रॉइड Layout में match_parent vs wrap_content — पूरा अंतर समझाया गया ये दो सबसे मौलिक लेआउट चौड़ाई/ऊंचाई मोड हैं जो हर एंड्रॉइड डेवलपर को पता होने चाहिए। नोट: fill_parent API लेवल 8 (Android 2.2) में डिप्रिकेटेड हो गया था — इसका आधुनिक नाम match_parent है। दोनों समान व्यवहार करते हैं। त्वरित तुल