2010-10-29 13 views
6

मैं ऑनक्रेट विधि को कॉल किए बिना लेआउट बदलना चाहता हूं। मैं एंड्रॉइड को भी परिभाषित करता हूं: configChanges = "orientation | keyboardhidden" मेरी गतिविधि में और यह ऑनक्रेट विधि को कॉल नहीं कर रहा है लेकिन लेआउट लैंडस्केप मोड पर उचित रूप से समायोजित नहीं है।ऑनरेट कॉल के बिना अभिविन्यास बदलें

मेरा वर्तमान लेआउट निम्नानुसार दिखता है।

alt text

परिदृश्य के रूप में परिवर्तन उन्मुखीकरण के बाद यह इस प्रकार की तरह लग रहे: alt text

लेकिन परिदृश्य पर मैं निम्नलिखित परिणाम चाहते हैं।

alt text

वहाँ किसी भी ऑटो आसन्न संपत्ति है?

मैं इसे कैसे कर सकता हूं?

+0

आप डिफ़ॉल्ट प्रति लैंडस्केप मोड या वास्तव में क्या आप कोशिश कर रहे हैं में अपने आवेदन के लिए करना चाहते हैं? –

उत्तर

0

मुझे लगता है कि आप एक लाइनरलाइट का उपयोग कर रहे हैं, क्योंकि आपने निर्दिष्ट नहीं किया है, लेकिन LinearLayout क्लास में setOLentation() नामक एक फ़ंक्शन है जिसे इसे ठीक करना चाहिए। आपको अपनी जावा फ़ाइल में अपने लेआउट का एक उदाहरण बनाना होगा (जिसे आपने पहले से ही किया हो) और फिर अपनी विंडो पर एक ओरिएंटेशन बदलें या इवेंट श्रोता का आकार बदलें। उसके बाद यह स्क्रीन अभिविन्यास के आधार पर क्षैतिज/लंबवत को ओरिएंटेशन बदल रहा है।

+0

मैं टेबललेआउट का उपयोग कर रहा हूं। रैखिक लेआउट में यह संभव है। –

+0

यदि यह LinearLayout के माध्यम से संभव है, तो कृपया मुझे नमूना कोड प्रदान करें। –

+0

हाँ, लाइनरलाइट का उपयोग करना आसान तरीका है, आप कहीं भी स्रोत कोड पा सकते हैं –

4

पोर्ट्रेट से परिदृश्य में परिवर्तन देखने के दौरान कोई ऑटो समायोजन संपत्ति नहीं है।

छवियों है कि आप लैंडस्केप मोड

में प्रदर्शित एक filename.xml फ़ाइल बनाएँ और लैंडस्केप मोड के लिए अपने लेआउट डिजाइन करने के लिए चाहते हैं। फ़ाइल नाम को अपनी पिछली एक्सएमएल फ़ाइल के समान लेआउट फ़ोल्डर में दें जिसे आप गतिविधि के लिए उपयोग कर रहे हैं।

लेआउट-भूमि के रूप में रेस में फ़ोल्डर/नाम बनाएँ और रेस में है कि filename.xml फ़ाइल तो रखना/लेआउट भूमि फ़ोल्डर

यह स्वचालित रूप से है कि कॉल करेंगे RES/लेआउट भूमि/filename.xml जब उन्मुखीकरण परिवर्तन चित्र से परिदृश्य तक।

या आप भी उपयोग कर सकते हैं

@Override 
    public void onConfigurationChanged(Configuration newConfig) { 

     super.onConfigurationChanged(newConfig); 

     if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { 
      //your code 
     } else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
     //your code 
     } 
    } 
1

इस दस्तावेज़ वें संभाल इस

http://developer.android.com/resources/articles/faster-screen-orientation-change.html

+0

** यह एक डिज़ाइन त्रुटि है। ** यह एंड्रॉइड टीम http://goo.gl/zoCJV के लिए ** सुविधा ** के आधार पर चुना गया है । एंड्रॉइड टीम पर दोष है। मैं दस्तावेज में इस्तेमाल किए गए स्वर से घृणा करता हूं जो बताता है कि यह उनकी गलती नहीं है। – Pacerier

1

देखें आप AndroidManifest.xml पर गतिविधि के टैग से android:configChanges="orientation" जोड़ सकते हैं। इसे आज़माएं।

0

आप केवल एंड्रॉइड manifestPites = "ओरिएंटेशन | कीबोर्ड हैड" एंड्रॉइड manifest.it कार्यों में आपके गतिविधि टैग में डालते हैं।

0

रखो अपने प्रकट भाई में इस ..

android:configChanges="orientation|keyboardHidden|screenSize|uiMode" 

यह हल है आपकी और मेरी समस्या: डी

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