2010-08-21 10 views
38

यदि AbsoluteLayout को बहिष्कृत किया गया है तो इसके बजाय मैं इसका उपयोग कैसे कर सकता हूं?एंड्रॉइड में AbsoluteLayout के लिए वैकल्पिक?

मैंने एक ऐप किया है जो AbsoluteLayout का उपयोग करता है लेकिन यह विभिन्न स्क्रीन संकल्पों के साथ अच्छी तरह से काम नहीं करता है। मैं उपयोग करता हूं क्योंकि मैं एक बटन की एक्स और वाई स्थिति सेट कर सकता हूं। क्या मैं किसी अन्य लेआउट का उपयोग करके बटन की स्थिति सेट कर सकता हूं?

+3

आप जो भी हासिल करने की कोशिश कर रहे हैं उसका वर्णन करने के लिए आपको बेहतर सेवा दी जाएगी। 'AbsoluteLayout' कारण का कारण बहिष्कृत है क्योंकि यह एकाधिक स्क्रीन आकारों का समर्थन नहीं करता है। 'AbsoluteLayout' के लिए कोई भी प्रत्यक्ष अनुपूरक (उदा।, मार्जिन के साथ 'फ्रेमलेआउट') एक ही समस्या का सामना करेगा। आपको अपनी समस्या के अन्य समाधानों की तलाश करके शुरू करना चाहिए, जो कि उपकरणों की एक विस्तृत श्रृंखला के साथ बेहतर काम करेंगे। – CommonsWare

+0

धन्यवाद। मैंने अभी कुछ जानकारी जोड़ दी है। – JoeyCK

+0

मैंने अभी एक लाइब्रेरी जारी की है जो ओपी के लिए ब्याज की होगी: https://github.com/ManuelPeinado/ImageLayout – Manuel

उत्तर

20

आप को यहां बताए गए RelativeLayouts उपयोग कर सकते हैं: Set the absolute position of a view

+2

रिलेवेटिवआउट के साथ बड़ी समस्या यह है कि यदि आप उन्हें घोंसला देते हैं, तो ऑनमेजर डबल्स पर कॉल की संख्या हर कदम। तो यदि आपको गहरी पदानुक्रम की आवश्यकता है, तो यह एक अच्छा जवाब नहीं है। –

+0

@ विलियमजॉकसच मैंने इसे अपने आप को कठिन तरीके से पाया। समाधान (सबसे अच्छा सोफर) लाइनरलायआउट का उपयोग करना जब भी संभव हो (और यह आमतौर पर होता है), और लाइनरलाइट्स के अंदर रिलेवेटलाइट्स घोंसला करना है। मेरे पास एक टेबल व्यू था जिसे मैंने नेस्टेड रिलेवेटलाइट्स के साथ रिश्तेदार लेआउट के साथ बनाया - लाइनरलायआउट के लिए केवल शीर्ष दृश्य को बदलने पर, मुझे सामान्य निष्पादन का समय मिला। मैं अनुमान लगाता हूं कि आप इसके अंदर रिलेवेटिवआउट के साथ एक लाइनरलाइट बनाकर "निरपेक्ष लयआउट" को हॅक कर सकते हैं, लेकिन इसकी आवाज भयानक है। – user1122069

0

मैं सिर्फ एक रिश्तेदार लेआउट का उपयोग करें और यह अन्य मदों/स्क्रीन के किनारों के आधार पर निर्धारित किया जाएगा। अन्यथा आपका लेआउट विभिन्न उपकरणों पर अलग दिखाई देता है। छोड़ दिया

+0

मैं एक ग्राफिक कर रहा हूं जहां मुझे स्टेटिक छवि पर EXACT स्थितियों में टेक्स्ट दृश्य रखना होगा। मुझे लगता है कि एकमात्र तरीका (प्रभावी रूप से तकनीकी रूप से नहीं) एक पूर्ण लेआउट होगा। तब मैं विभिन्न बाल्टी के लिए कुछ कर सकता था, लेकिन जैसा कि मैं इसके साथ गधे में दर्द की उम्मीद कर रहा हूं। –

10

उपयोग RelativeLayout और सेट और सही मार्जिन

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); 
lp.leftMargin = x; 
lp.topMargin = y; 
5

तरह FrameLayout उपयोग पर विचार करें। यदि आप अपने बच्चे गुरुत्वाकर्षण को TOP|LEFT पर सेट करते हैं तो आप पदों के रूप में leftMargin और topMargin का उपयोग कर सकते हैं। बोनस के रूप में आपको गुरुत्वाकर्षण को बदलकर कुछ अन्य उपयोगी पोजिशनिंग तंत्र मिलते हैं।

1

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

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