क्या आप RelativeLayout में एक बटन केंद्र कर सकते हैं?


174

मैं रिश्तेदार लेआउट में एक बटन को केंद्रित करने की कोशिश कर रहा हूं, क्या यह संभव है? मैंने गुरुत्वाकर्षण और अभिविन्यास कार्यों की कोशिश की है, लेकिन वे कुछ भी नहीं करते हैं।


1
भाषा: हिन्दी? फ्रेमवर्क? ओएस?
अर्नोल्ड स्पेंस

3
@ अरनॉल्ड स्पेंस: आपने मुझे 24 सेकंड से हराया :)
निप्पिसोरस

3
क्षमा करें, स्टैक ओवरफ्लो का उपयोग करते हुए यह मेरा पहला अवसर है। हां मैं Android के लिए विकसित कर रहा हूं। =)
आर्काडिया

7
कोई परेशानी नहीं। सही टैग से सही पॉलीप का ध्यान तेजी से जाएगा। फिक्स्ड :)
अर्नाल्ड स्पेंस

8
+1 अर्नोल्ड स्पेंस के लिए विचारशील होने के लिए। एसओ पर कुछ लोगों ने मौखिक रूप से "नया" होने के लिए ओपी को नष्ट कर दिया होगा।
सुबह

जवाबों:


370

प्रयत्न

android:layout_centerHorizontal="true"

बिल्कुल इस तरह, यह मेरे लिए काम करता है:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:background="#ff0000">

    <Button
        android:id="@+id/btn_mybutton"
        android:layout_height="wrap_content"
        android:layout_width="124dip"
        android:layout_marginTop="5dip"
        android:layout_centerHorizontal="true"/>

</RelativeLayout>

5
यदि आपके पास आपकी चौड़ाई के लिए match_parent है तो मैं काम नहीं करता।
घोटी

2
यदि आपके पास अपनी चौड़ाई के लिए match_parent है, तो यह पहले से ही क्षैतिज रूप से केंद्रित है।
ataulm

103

आप रिश्तेदार लेआउट के लिए CENTER_IN_PARENT का उपयोग कर सकते हैं।

android:layout_centerInParent="true"उस तत्व में जोड़ें , जिसे आप RelativeLayout में रखना चाहते हैं


वह केंद्र क्षैतिज और मौखिक रूप से, कैसे '' बॉटल लेआउट_सेंटर हॉरिजॉन्टल = सत्य
user3076750

37

अर्काडिया, बस नीचे दिए गए कोड को आज़माएं। परिणाम प्राप्त करने के कई तरीके हैं जिनकी आप तलाश कर रहे हैं, यह आसान तरीकों में से एक है।

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/relative_layout"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:gravity="center">

    <Button
        android:id="@+id/the_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Centered Button"/>
</RelativeLayout>

RelativeLayout के गुरुत्वाकर्षण को स्थापित करने से इसके अंदर रखी सभी वस्तुओं पर असर पड़ेगा। इस मामले में, यह सिर्फ बटन है। आप यहां किसी भी गुरुत्व सेटिंग का उपयोग कर सकते हैं, निश्चित रूप से (उदाहरण के लिए, केंद्र, शीर्ष, दाएं, और इसी तरह)।

आप इस कोड का उपयोग नीचे भी कर सकते हैं:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/relative_layout"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent">

    <Button
        android:id="@+id/the_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Centered Button"
        android:layout_centerInParent="true"/>
</RelativeLayout>

1
धन्यवाद। हालाँकि, अगर मेरे पास कई बटन थे और केवल एक ही केंद्रित था तो मैं यह कैसे करूँगा? पहला कोड माता-पिता के रिलेटिवआउट के भीतर सब कुछ केन्द्रित करेगा। इसके अलावा, मैं इसे पंक्ति के शीर्ष पर बटन कैसे केंद्रित कर सकता हूं?
अर्काडिया

बस दूसरे उदाहरण का उपयोग करें, और केवल उस केंद्र को जोड़ें जिसमें आप केंद्रित बटन चाहते हैं। आप इसे शीर्ष पर और इसे क्षैतिज रूप से केंद्र में संरेखित करने के लिए CenterHor क्षैतिज, और Layout_alignParentTop का भी उपयोग कर सकते हैं। आप वास्तव में क्या हासिल करने की कोशिश कर रहे हैं, मैं एक बेहतर उदाहरण दे सकता हूं।
केविन कोपॉक

मैं मुश्किल से Android विकास के अपने अध्ययन की शुरुआत कर रहा हूं और पूरी तरह से समझने की कोशिश कर रहा हूं कि चीजों को मैं कैसे करना चाहता हूं। मूल रूप से मैं पिक्सल्स के साथ चीजों को संरेखित करने से दूर रहना चाहता हूं क्योंकि तस्वीर एक अलग स्क्रीन प्रकार / रिज़ॉल्यूशन पर बहुत अलग दिख सकती है। हालाँकि, जब आप गुरुत्वाकर्षण कमांड का उपयोग करते हैं, तो सब कुछ इस प्रकार होता है। मैं एक बटन के लिए गुरुत्वाकर्षण को अक्षम करने की कोशिश की उपेक्षा करके और यह काम नहीं किया। यह सामान बहुत मुश्किल है।
आर्काडिया

हाँ, यह निश्चित रूप से हो सकता है। किसी भी विशेष लेआउट को करने के लिए बहुत सारे तरीके हैं। सबसे अच्छा तरीका यह है कि आप इसे अपने सिर में स्केच बनाना चाहते हैं कि आप इसे कैसे चाहते हैं, और वहां से जाएं। यह त्वरित ट्यूटोरियल कुछ भी मदद कर सकता है: developer.android.com/resources/tutorials/views/…
केविन कोप्पॉक

हाँ, मैं वास्तव में उस ट्यूटोरियल कर रहा था। मैं प्रत्येक ट्यूटोरियल के माध्यम से जा रहा हूं और उन्हें पूरी तरह से हेरफेर करना सीख रहा हूं, अन्यथा मुझे समझ नहीं आएगा कि हर एक कैसे अलग है।
अर्काडिया

25

संक्षेप

जोड़ना:

android:layout_centerInParent="true"

बस RelativeLayout पर काम करता है, अगर निम्नलिखित विशेषताओं में से एक भी दृश्य के लिए निर्धारित है:

android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"

जो बच्चे को माता-पिता के दृष्टिकोण को संरेखित करता है। "केंद्र" आपके द्वारा चुने गए संरेखण की धुरी पर आधारित है:

बाएँ / दाएँ -> ऊर्ध्वाधर

ऊपर / नीचे -> क्षैतिज

दृश्य के अंदर चिल्ड / कंटेंट का गुरुत्वाकर्षण सेट करना:

android:gravity="center"

यदि कोई संरेखण सेट नहीं है, तो किसी भी मामले में माता-पिता के दृश्य के अंदर बच्चे को केंद्रित करना। वैकल्पिक आप चुन सकते हैं:

<!-- Axis to Center -->
android:gravity="center_horizontal"
android:gravity="center_vertical"

<!-- Alignment to set-->
android:gravity="top"
android:gravity="bottom"
android:gravity="left"
android:gravity="right"
android:gravity="fill"
...

फिर वहाँ है:

android:layout_gravity="center"

जो अपने आप को अभिभावक के अंदर देखने को केंद्रित कर रहा है

और अंत में आप माता-पिता को देखने के लिए निम्नलिखित विशेषता जोड़ सकते हैं:

android:layout_centerHorizontal="true"
android:layout_centerVertical="true"

7

android:centerInParent="true"जब आप संबंधित लेआउट में दृश्य को केंद्र में रखना चाहते हैं, तो दृश्य के अंदर विशेषता का उपयोग करें ।

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    <TextView
        android:layout_centerInParent="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="NWE"
        android:textSize="30dp"/>
</RelativeLayout>

5

इसका आसान, न ही इसे कुछ भी संरेखित करें

<Button
        android:id="@+id/the_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:layout_centerInParent="true"
        android:text="Centered Button"/>


2

किसी एक दिशा में संरेखण को केंद्र में रखने के लिए एंड्रॉइड का उपयोग करें: layout_centerHor क्षैतिज = "true" या android: Layout_centerVertical = "true" चाइल्ड लेआउट में


1

एंड्रॉइड जैसे किसी भी संरेखण को हटा रहा है: layout_alignParentStart = "true" और केंद्र में जोड़ने के लिएParent ने मेरे लिए काम किया। यदि "संरेखित" में रहता है, तो केंद्रइंटरपेंट काम नहीं करता है


1

यह वास्तव में आसान है। नीचे दिए गए कोड को आज़माएं,

<RelativeLayout
    android:id="@+id/second_RL"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/first_RL"
    android:background="@android:color/holo_blue_bright"
    android:gravity="center">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

</RelativeLayout>

1
कोड केवल उत्तरों का यहाँ स्वागत नहीं है। उपरोक्त विवरण काम करेगा क्यों अधिक विवरण पोस्ट करने की कोशिश करें। :)
विविज़

गाइडलाइन के लिए धन्यवाद। मैं यहां नया हूं।
प्रिमेश

0

आपने इसे माता-पिता के बाईं या दाईं ओर संरेखित किया होगा

android:centerInParent="true"कोड का उपयोग करते समय इनमें से किसी का उपयोग न करें : -

android:layout_alignParentLeft="true"

android:layout_alignParentLeft="true"

android:layout_alignRight=""

आदि।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.