2012-02-06 10 views
18

आइस क्रीम सैंडविच में होलो संवाद विषय (@android:style/Theme.Holo.Dialog) का उपयोग करके गतिविधियों के साथ मैं एक अजीब मुद्दे पर आया हूं।आईसीएस होलो संवाद विषय के साथ क्या गलत है?

ऐसा लगता है जैसे वे अपने लेआउट को अनदेखा करते हैं और लेआउट चौड़ाई और ऊंचाई को उनके एक्सएमएल लेआउट से भरते हैं। वही लेआउट हनीकॉम्ब में उम्मीद के रूप में काम कर रहे हैं, लेकिन आइस क्रीम सैंडविच पर नहीं।

उदाहरण:

सही तरीका (Honeycomb) enter image description here

गलत रास्ते (आइस क्रीम सैंडविच) enter image description here

दोनों उपकरणों आवेदन की ठीक उसी संस्करण चला रहे हैं, और सटीक एक ही लेआउट का उपयोग कर रहे हैं। प्रश्न में लेआउट यहां दिया गया है:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/linearLayout1" 
    android:layout_width="940dp" 
    android:layout_height="600dp" 
    android:layout_margin="10dp" > 

    <GridView 
     android:id="@+id/gridView1" 
     android:layout_width="940dp" 
     android:layout_height="600dp" 
     android:horizontalSpacing="10dp" 
     android:numColumns="3" 
     android:smoothScrollbar="true" 
     android:stretchMode="columnWidth" 
     android:verticalSpacing="10dp" > 
    </GridView> 

</LinearLayout> 

किसी भी विचार को हल किया जा सकता है कि इसका समाधान कैसे किया जा सकता है? एक समान समस्या मेरे आईसीएस आधारित गैलेक्सी नेक्सस पर होती है, जो ऊंचाई और चौड़ाई के लिए match_parent टैग को पूरी तरह से अनदेखा करती है। आईसीएस में संवाद विषय टूट गया है?

अद्यतन:

मैं कुछ और परीक्षण किया है, और यह चौड़ाई या उससे कम "सही" देखो उत्पादन करेगा की 894dp की तरह लगता है, लेकिन 895dp या अगर मैं चौड़ाई सेट अधिक, यह ' गलत देखो होगा। एम्यूलेटर एक ही तरह से अभिनय कर रहा है। यह बहुत अजीब है ...

enter image description here

+0

यह अजीब लगता है। यह अंधेरे में एक शॉट है, लेकिन कभी-कभी बिल्ड लक्ष्य को बदलने के बाद मुझे अपने ऐप में अजीब ग्राफिकल ग्लिच का अनुभव होगा। मुझे नहीं पता कि क्यों, लेकिन परियोजना की सफाई हमेशा उन्हें ठीक करेगी। जैसे मैंने कहा, अंधेरे में गोली मार दी, लेकिन यह इतना आसान हो सकता है। – adneal

+0

धन्यवाद, बस फिर से कोशिश की, लेकिन ऐसा कोई प्रतीत नहीं हुआ। मैंने अभी अपना प्रश्न फिर से अपडेट किया है - ऐसा लगता है कि यह चौड़ाई के 894 और 895 डीपी के बीच हो रहा है। –

+0

क्या आपकी स्क्रीन शॉट दो अलग-अलग उपकरणों का उपयोग करके ली गई हैं? आपकी पोस्ट मानती है कि यह व्यवहार हमेशा हनीकॉम्ब पर सही ढंग से काम करता है लेकिन आईसीएस पर नहीं, लेकिन क्या यह संभव है कि आपके पास जो समस्या हो रही है वह पूरी तरह से स्क्रीन के आकार पर निर्भर है? यदि नहीं, तो आप एक ही स्क्रीन आकार के साथ दो एवीडी (एक चलने वाला 3.0 और दूसरा चल रहा 4.0) बनाने पर विचार कर सकते हैं और यह निर्धारित करने के लिए दोनों की जांच कर सकते हैं कि समस्या वास्तव में एंड्रॉइड एसडीके संस्करण संख्या पर निर्भर है या नहीं। –

उत्तर

6

मुझे नहीं लगता कि यह सच है कि आईसीएस संवाद को हतोत्साहित करता है। वास्तव में, उनके पास एक संपूर्ण page at Android Design है। सच यह है कि DialogFragment (जिसे Android Support library में भी प्रदान किया जाता है) विरासत Dialog पर प्राथमिकता दी जाती है।

मैं पूर्ण स्क्रीन पर पॉप-अप करने वाले संवाद के बारे में आपके अवलोकन की पुष्टि करता हूं, लेकिन व्यवहार डिवाइस-निर्भर है। मेरे ज़ूम टैबलेट पर यह 915 डीपी पर होता है, न कि 895. मेरे गैलेक्सी नेक्सस पर, यह 444 डीपी पर होता है। और मेरे गैलेक्सी टैब 10.1 पर, यह बिल्कुल नहीं होता है।

यदि आप स्रोत में खोदते हैं, तो आप देख सकते हैं कि एक डायलॉग थीम है जो Holo से छोटी स्क्रीन के लिए और Holo.Dialog.FixedSize से बड़े लोगों के लिए है। मैं उम्मीद करता हूं कि यह प्रदर्शन आकार पर आधारित होगा, लेआउट आकार नहीं, लेकिन शायद मुझे गलत लगेगा। मैं यह जानने की कोशिश करूंगा कि कूदने का क्या कारण है।

+0

धन्यवाद, उत्कृष्ट होगा! Holo.Dialog.FixedSize थीम के बारे में भी नहीं पता था। –

+0

मुझे यह वही समस्या दिखाई दे रही है: थीम का उपयोग करके थीम की गई थी। Holo.Light। संवाद। NoActionBar विषय जेलीबीन पर सही तरीके से व्यवहार करता है लेकिन आईसीएस पर उपरोक्त 'अतिरिक्त आकार' मुद्दा है। –

1

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

0

एंड्रॉइड के सभी संस्करण एक संवाद थीम्ड लेआउट xml की चौड़ाई/ऊंचाई को अनदेखा करते हैं।

इसे ठीक करने के लिए बुला के बाद:

setContentView(R.layout.contacts_preferences); 

एक पंक्ति जोड़ें:

getWindow().setLayout(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); 

या WRAP_CONTENT अपनी आवश्यकताओं के लिए।

+0

नहीं, वे नहीं करते हैं। जैसा मैंने कहा, यह हनीकॉम में ठीक काम करता है। –

0

एक रिलेवेटिवआउट के लिए अपने लीनियरलाउट को स्वैप करने का प्रयास करें। वह चाल करेगा :)

किसी भी तरह लाइनरलेआउट हमेशा संवाद में प्रदर्शित होने पर स्क्रीन भरता है। सापेक्ष लेआउट नहीं करते हैं।

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