2012-06-05 17 views
11

काम नहीं कर रहा है मैं RelativeLayout में क्षैतिज रूप से कई विचारों को केंद्रित करने की कोशिश कर रहा हूं जो आधार है।सापेक्ष लयआउट गुरुत्वाकर्षण केंद्र

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center_horizontal" 
    android:background="@android:color/transparent" > 

यह काम नहीं कर रहा है। मैंने विचारों में से एक के लिए centerInParenttrue सेट किया है और यह काम किया है। हालांकि, मैं इस समाधान का उपयोग नहीं कर सकता क्योंकि मेरे पास 2 विचार हैं जो एक साथ केंद्रित होने की आवश्यकता है। इसे अनुकूलित करने का प्रयास कर रहा हूं, इसलिए मैं एक दूसरे के अंदर घोंसले के लेआउट, विशेष रूप से रैखिक से बचना चाहता हूं।

क्या कुछ स्पष्ट है कि मुझे याद आ रही है? मैंने सोचा कि इस स्थिति के लिए यह विशेषता बनाई गई है।

उत्तर

1

तो इस मुद्दे के लिए मेरा फिक्स केवल टेक्स्टव्यू की यौगिक ड्रायबल सुविधा का लाभ उठाने के लिए निकलता है। मैंने बस बटन को ट्रैश किया और खोज आइकन दिखाने के लिए drawableRight का उपयोग किया।

4

आपको कई लेआउट एक साथ घोंसला करने की आवश्यकता होगी। रिलेटिवलायआउट में कुछ केंद्र करने के लिए, आप बच्चे पर android:layout_centerInParent="true" का उपयोग करें। यदि आप कई बच्चों को केंद्र में रखने की कोशिश करते हैं, तो वे एक दूसरे के नीचे/खत्म हो जाएंगे।

इसलिए, उदाहरण के लिए, आप लाइनरलायआउट का उपयोग रिलेवेटलायआउट में एक बच्चे के रूप में दो विचारों के साथ कर सकते हैं, जिसमें लाइनरलाइट android:orientation="horizontal" और android:layout_centerInParent="true" है। लीनियरलाउट अब रिश्तेदार लयआउट में केंद्रित होना चाहिए, दोनों बच्चों के साथ एक दूसरे के बगल में।

+1

मैं वास्तव में यह मुख्य गतिविधि है क्योंकि इस स्क्रीन को अनुकूलित करने की कोशिश कर रहा है। इसलिए मैं वास्तव में वास्तव में घूमने वाले LinearLayouts से बचने की कोशिश कर रहा हूँ। मैं वास्तव में इस ऐप से सभी लाइनरलेआउट को हटा रहा हूं क्योंकि वे भयानक अक्षम हैं। –

+3

ठीक है, अगर आप लेआउट घोंसला नहीं कर सकते हैं तो इसे करने के लिए कोई रास्ता नहीं है (अच्छी लग रही है)। कम से कम जहां तक ​​मुझे पता है। –

2

लीनियरलाउट में दो विचारों को लपेटें और उसके बाद रिलेवेटिवआउट में लिनियरलाउट को केंद्र करें जैसे आपने एकल टेक्स्ट व्यू के लिए किया था।

+0

घोंसला नहीं करना चाहते हैं। और यह अभी भी उस मुद्दे को समझा नहींता है जो सत्य पर सेट करते समय centerInParent काम करता है, लेकिन काम नहीं कर रहा है जब गुरुत्वाकर्षण center_horizontal –

+0

पर सेट किया गया है, अपने टेक्स्ट दृश्यों पर 'एंड्रॉइड: layout_gravity = "केंद्र क्षैतिज" का प्रयास करें। – Barak

+0

नहीं। उत्तर के लिए धन्यवाद, लेकिन यह काम नहीं करेगा। मुझे साइड-बाय-साइड होने के लिए दो बटनों की आवश्यकता है ताकि प्रत्येक के लिए center_horizontal उन्हें एक-दूसरे के शीर्ष पर रखे। –

8

मैंने नेस्टेड व्यू ग्रुप का उपयोग किये बिना तीन विचारों सहित एक समान मुद्दे का उत्तर दिया।

https://stackoverflow.com/a/13279846/1011746

यह API 11.

में परीक्षण किया जाता है दो दृश्य क्षैतिज मामले के लिए:

<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center" 
    android:background="@android:color/black" 
    > 
    <Button 
    android:id="@+id/apply" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" 
    android:text="APPLY" 
    android:textSize="20sp" 
    /> 
    <Button 
    android:id="@+id/undo" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" 
    android:text="UNDO" 
    android:textSize="20sp" 
    android:layout_toRightOf="@id/apply" 
    /> 
</RelativeLayout> 

दो दृश्य खड़ी मामले के लिए:

<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center" 
    android:background="@android:color/black" 
    > 
    <Button 
    android:id="@+id/apply" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" 
    android:text="APPLY" 
    android:textSize="20sp" 
    /> 
    <Button 
    android:id="@+id/undo" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" 
    android:text="UNDO" 
    android:textSize="20sp" 
    android:layout_below="@id/apply" 
    /> 
</RelativeLayout> 
+0

यह समाधान केवल तभी काम करता है जब विचार एक पंक्ति में ढेर किया जा सकता है, यदि लेआउट अधिक जटिल है, तो केवल एक ही समाधान नेस्टेड लेआउट का उपयोग करना है क्योंकि अन्य उत्तरों सुझाव देते हैं या एक अलग अप्राच लेते हैं। – TheIT