2014-09-29 10 views
5

मेरे क्षैतिज रैखिक स्तर पर, मैंने गुरुत्वाकर्षण को एक दृश्य में center_vertical होने के लिए सेट किया है, और फिर मैंने दूसरे दृश्य के लिए layout_gravity सेट करने का प्रयास किया, लेकिन यह दृश्य पहले दृश्य में केंद्रित टेक्स्ट के साथ रेखांकित है!क्षैतिज लेआउट में किसी अन्य बच्चे के दृश्य के बच्चे दृश्य दृश्य परिवर्तन लेआउट संरेखण को सेट करने के केंद्र गुरुत्वाकर्षण को सेट करना?

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" > 
    <TextView 
     android:layout_width="100dp" 
     android:layout_height="200dp" 
     android:layout_gravity="top" 
     android:background="@drawable/border" 
     android:gravity="center_vertical" 
     android:text="layout_gravity=top gravity=center_vertical" > 
    </TextView>    
    <TextView 
     android:layout_width="100dp" 
     android:layout_height="200dp" 
     android:layout_gravity="top" 
     android:background="@drawable/border" 
     android:gravity="top" 
     android:text="layout_gravity=top gravity=top" > 
    </TextView> 
</LinearLayout> 

enter image description here

और यहाँ एक ही कोड लेकिन एक ऊर्ध्वाधर लेआउट के लिए है। ध्यान दें कि वांछित व्यवहार लंबवत लेआउट में सही ढंग से काम करता है।

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 
    <TextView 
     android:layout_width="200dp" 
     android:layout_height="100dp" 
     android:layout_gravity="left" 
     android:background="@drawable/border" 
     android:gravity="center_horizontal" 
     android:text="layout_gravity=left gravity=center_horizontal" > 
    </TextView>    
    <TextView 
     android:layout_width="200dp" 
     android:layout_height="100dp" 
     android:layout_gravity="right" 
     android:background="@drawable/border" 
     android:gravity="right" 
     android:text="layout_gravity=right gravity=right" > 
    </TextView> 
</LinearLayout> 

enter image description here

मैं सिर्फ एक RelativeLayout उपयोग कर सकते हैं या हो सकता है एक और नेस्टेड LinearLayout समस्या को ठीक करने के लिए। लेकिन मैं इस सवाल से पूछ रहा हूं क्योंकि मैं जानना चाहता हूं कि मुझे समझ में नहीं आता कि गुरुत्वाकर्षण और लेआउट_ग्रैविटी कैसे काम करती है !! मेरे लिए यह महत्वपूर्ण है कि मैं समझता हूं कि ये मौलिक गुण कैसे काम करते हैं। धन्यवाद

उत्तर

7

आप केंद्रित है और एक शीर्ष चाहते हैं तो आपको एक आधारभूत गठबंधन ध्वज जोड़ने की जरूरत LinearLayout

android:baselineAligned="false" 

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

ऊर्ध्वाधर के साथ अंतर यह है कि बेसलाइन को क्षैतिज रूप में गठबंधन नहीं किया जा सकता है।

देखें: -:

http://www.doubleencore.com/2013/10/shifty-baseline-alignment/

+0

बहुत बढ़िया है। धन्यवाद!! मैं पागल हो रहा था। –

+0

+1। इसके बारे में पता नहीं था। –

+0

दिलचस्प। कुछ नया सीख लिया :) – Karakuri

0

gravity यह है कि दृश्य स्वयं अपनी चौड़ाई और ऊंचाई से निर्धारित क्षेत्र के भीतर अपनी सामग्री को कैसे स्थान देता है। layout_gravity यह है कि कैसे मूल दृश्य बच्चे के माता-पिता के क्षेत्र में बच्चे को स्थान देता है। आम तौर पर आप अपने सभी बच्चों पर layout_gravity सेट करने के बजाय LinearLayout पर gravity सेट कर सकते हैं।

ध्यान दें कि लीनियरलाइट्स के लिए, gravity केवल धुरी पर प्रभाव डालता है जो अभिविन्यास नहीं है, उदा। ऊपर और नीचे एक क्षैतिज रैखिक Layout के लिए प्रासंगिक होगा, लेकिन बाएं और दाएं (या शुरू और अंत) प्रासंगिक नहीं होगा।

+0

पहले उदाहरण में दूसरा TextView layout_gravity = "टॉप" है

http://developer.android.com/reference/android/widget/LinearLayout.html#attr_android:baselineAligned

अतिरिक्त जानकारी यह समस्या बेहतर की तुलना में मैं कर सकते हैं समझाने के लिए प्रकट होता है । यह माता-पिता क्षैतिज रैखिक है। बच्चे TextView के शीर्ष के साथ बच्चे TextView के शीर्ष के साथ गठबंधन क्यों नहीं है? –

0

आप कुछ यानी आप चाहते हैं दो विगेट्स के बीच कुछ जगह तो एक खाली विजेट और उपयोग वजन

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="horizontal" 
android:weightSum="100" > 

<TextView 
    android:layout_width="100dp" 
    android:layout_height="200dp" 

    android:layout_weight="40" 
    android:gravity="center_vertical" 
    android:text="layout_gravity=top gravity=center_vertical" > 
</TextView> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_weight="20" /> 

<TextView 
    android:layout_width="100dp" 
    android:layout_height="200dp" 

    android:layout_weight="40" 
    android:gravity="right" 
    android:text="layout_gravity=top gravity=top" > 
</TextView> 

</LinearLayout> 

Main Answer Image

का उपयोग नहीं "एक दूसरे से जुड़े" कोशिश कर रहे हैं, तो आप उत्पादन के बारे में स्पष्ट नहीं थे जो आप चाहते थे, यही वह है जो मैं आपके आवश्यक आउटपुट के रूप में व्याख्या कर सकता हूं .. लेकिन मैं आपको बताऊंगा कि यह कैसे काम करता है .. वजन पर अधिक के लिए आप http://developer.android.com/reference/android/widget/package-summary.html

पर वहां जा सकते हैं रों कुछ "विजेट" और "विजेट की सामग्री को" layout_gravity साथ LinearLayout की बात करते हुए आप गुरुत्वाकर्षण इसके बारे में स्वयं एक "विजेट" के रूप में मुख्य दृश्य में सेट और गुरुत्वाकर्षण साथ आपको लगता है कि सामग्री के लिए गुरुत्वाकर्षण सेट के रूप में बुलाया linearlayout

सरलतापूर्वक टेक्स्टव्यू के साथ, यदि आप लेआउट_ग्रैविटी (केंद्र के बराबर कहते हैं) का उपयोग करते हैं तो टेक्स्टव्यू अपनी जगह में केंद्रित होगा (यानीयह इसकी चौड़ाई में केंद्रित किया जाएगा यदि layoutorientation खड़ी है, और यह इसकी ऊंचाई में केंद्रित किया जाएगा यदि layout_orientation क्षैतिज है)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="horizontal"> 

<TextView 
    android:layout_width="200dp" 
    android:layout_height="200dp" 
    android:layout_gravity="center" 
    android:text="Second Activity" /> 



</LinearLayout> 

Horizontal linear_layout

ही देखें ऊर्ध्वाधर अभिविन्यास में

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<TextView 
    android:layout_width="200dp" 
    android:layout_height="200dp" 
    android:layout_gravity="center" 
    android:text="Second Activity" /> 

</LinearLayout> 

Vertical Linear Layout

अब भी गुरुत्वाकर्षण के बारे में देखें जब आप TextView के लिए गुरुत्वाकर्षण लागू होते हैं, "पाठ" TextView में केंद्रित है (यदि गुरुत्वाकर्षण = केंद्र)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<TextView 
    android:layout_width="200dp" 
    android:layout_height="200dp" 
    android:layout_gravity="center" 
    **android:gravity="center"** 
    android:text="Second Activity" /> 

</LinearLayout> 

centerTextVertical

अब आपको पता कर सकते हैं कि गुरुत्वाकर्षण में दी गई सामग्री के लिए गंभीरता सेट विजेट .. विजेट की "सामग्री" विजेट ही हो सकती है .. लीनियरलाउट एक विजेट है, और रैखिक लेआउट के भीतर आप अभी भी अन्य प्रकार के विजेट (बटन और टेक्स्ट व्यू) को जोड़ते हैं तो गुरुत्वाकर्षण = केंद्र में टेक्स्टव्यू को लागू करने से इसकी सामग्री सेट हो जाती है (अर्थात केंद्र में पाठ) और LinearLayout के लिए आवेदन गुरुत्वाकर्षण अपनी सामग्री (यानी TextView) केंद्र में केंद्रित हो जाएगा

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
android:gravity="center"> 

<TextView 
    android:layout_width="200dp" 
    android:layout_height="200dp" 
    android:layout_gravity="center" 
    android:gravity="center" 
    android:text="Second Activity" /> 

</LinearLayout> 

layout_gravity_center

संबंधित मुद्दे

 संबंधित मुद्दे