2010-03-26 17 views
13

जब मैं fill_parent या wrap_content के साथ RelativeLayout का उपयोग ऊंचाई के रूप में करता हूं और एक तत्व जो निर्दिष्ट करता है: android:layout_alignParentBottom="true" इसे अनदेखा किया जाता है और यह शीर्ष पर गठबंधन होता है। Xzx6 की ऊंचाई को एक स्पष्ट मान पर सेट करने से यह काम करता है। कोई सुराग?एंड्रॉइड: layout_alignParentBottom को अनदेखा किया जाता है जब सूची दृश्य में पंक्ति के रूप में स्पष्ट लेआउट ऊंचाई के बिना उपयोग किया जाता है

उत्तर

16

यह एंड्रॉइड में एक बग प्रतीत होता है, http://code.google.com/p/android/issues/detail?id=1394 देखें।

मैं एक FrameLayout में मेरी RelativeLayout लपेटकर और android:layout_gravity="bottom" साथ FrameLayout के बच्चों के रूप में मेरे नीचे गठबंधन दृश्य डाल कर उसके चारों ओर काम किया। यह आपको RelativeLayout के भीतर से संदर्भित करने से रोकता है, इसलिए आपको इसके आसपास काम करना होगा (उदाहरण के लिए मार्जिन का उपयोग करना)।

यदि किसी के पास बेहतर कामकाज है, तो कृपया साझा करें।

+0

मुझे एक ही समस्या थी और ऐसा लगता है कि वास्तव में उस बग की वजह से। यह फियोयो में तय है लेकिन एक्लेयर में नहीं है। – simao

+0

यहां एक कामकाज है, मैंने अभी प्रकाशित किया है http://code.google.com/p/android/issues/detail?id=1394#c16 – Vadim

3

जब आप लेआउट को बढ़ाते हैं, तो inflate(R.layout.whatever, parent, false) का उपयोग करें, जहां parentListView है। यदि आप ऐसा नहीं करते हैं (उदाहरण के लिए, आप माता-पिता के लिए null पास करते हैं), RelativeLayout सूची पंक्तियों में अजीब हो जाता है।

+0

फिर भी यह काम करने के लिए नहीं मिल सकता है। मैं कर्सर एडाप्टर का उपयोग कर रहा हूं और newView() में अब मेरे पास है: देखें v = inflater.inflate (ROW_RESOURCE, postList, false); – alexanderblom

+0

यहां मेरी एक पुस्तक से एक प्रोजेक्ट है जो पंक्तियों में 'रिलेटिव लेआउट' का उपयोग करता है: http://github.com/commonsguy/cw-advandroid/tree/master/Introspection/Launchalot/ - देखें कि क्या आपको कोई संकेत मिलता है कि यह कहां है चीजें आपके लिए गलत हो सकती हैं। – CommonsWare

+0

ऐसा लगता है: http://code.google.com/p/android/issues/detail?id=1394। 1.6 पर तय नहीं है। एक निश्चित ऊंचाई निर्धारित करना वास्तव में एक विकल्प नहीं है क्योंकि ऊंचाई को चर होना आवश्यक है। कोई अच्छा कामकाज? या क्या मुझे बनाने के लिए मजबूर किया गया है कस्टम लेआउट का मालिक हो सकता है; सी – alexanderblom

0

मैं के साथ समस्याग्रस्त TextView निर्दिष्ट करके उचित संरेखण प्राप्त करने में सक्षम था:

android:id="@+id/must_be_bottom_left" 
android:layout_alignParentRight="true" 
android:layout_alignParentBottom="true" 
android:layout_below="@id/xxx" 

जहां xxx एक TextView है कि android:layout_below="@id/yyy"

और yyy का आईडी था कि हमेशा से ऊपर है एक TextView है xxx और must_be_bottom_left दोनों।

मेरी सूची वस्तुओं की सामग्री अलग-अलग हो सकती है ताकि कभी-कभी "xxx" TextViewView.GONE है, लेकिन फिर भी लेआउट अपेक्षा के अनुसार काम करता है।

मुझे नहीं पता कि यह काम कितना नाजुक या केवल भयानक है। मैं एंड्रॉइड 1.6 का उपयोग कर रहा हूं और मैंने इसे आगे संगतता के लिए परीक्षण नहीं किया है।

0

इस Andriod बग के लिए मेरे हैक:

ViewGroup.LayoutParams lp=(ViewGroup.LayoutParams)view.getLayoutParams(); 
lp.height=view.getContentHeight();//hack for android bug about ViewGroup.LayoutParams.WRAP_CONTENT and android:layout_alignParentBottom="true" on landscape orientation 
view.requestLayout(); 
act.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR); 
संबंधित मुद्दे