2010-05-01 23 views
10

मेरे पास अपेक्षाकृत सरल प्रश्न है (उम्मीद है)। मैं एंड्रॉइड को कैसे बताऊंगा कि पोर्ट्रेट के लिए कौन सा लेआउट उपयोग करना है और मेरे ऐपविड्ज पर लैंडस्केप ओरिएंटेशन के लिए किस लेआउट का उपयोग करना है?एंड्रॉइड विजेट अलग-अलग चित्र और परिदृश्य अभिविन्यास

अग्रिम धन्यवाद!

उत्तर

19

सबसे पहले, ध्यान रखें कि कुछ होम स्क्रीन (उदा।, नेक्सस वन) अभिविन्यास नहीं बदलती हैं।

प्रति अभिविन्यास अलग-अलग लेआउट के लिए मानक दृष्टिकोण res/layout/ में पोर्ट्रेट संस्करण को रखना है, और res/layout-land/ में लैंडस्केप संस्करण, दोनों एक ही नाम के तहत (उदा।, appwidget.xml) है। फिर, बस इसे नाम से देखें (उदा।, R.layout.appwidget), और एंड्रॉइड अभिविन्यास के आधार पर फ़ाइल का चयन करेगा। यह निश्चित रूप से गतिविधियों के लिए काम करता है, इसलिए मुझे लगता है कि यह ऐप विजेट के लिए काम करता है, लेकिन मुझे नहीं लगता कि मैंने वास्तव में इसे आजमाया है।

+2

यह गतिविधियों की तरह एपविड्ज के लिए काम करता है। –

+2

मैंने सोचा कि वह एपविजेट प्रदाता एक्सएमएल फ़ाइल के बारे में बात कर रहा था जहां आप मिनीविड्थ और मिनहाइट बताते हैं। आपकी कहानियों से आप एक्सएमएल-भूमि में एक और प्रदाता घोषित करेंगे? – Blundell

+0

ने अपना खुद का प्रश्न पुष्टि की। आप दो प्रदाताओं को एक लेआउट में और एक लेआउट भूमि में दे सकते हैं, उन्हें केवल तभी बुलाया जाएगा जब उस अभिविन्यास में ऐपविजेट बनाया गया हो, उन्हें अभिविन्यास परिवर्तन पर नहीं बुलाया जाएगा – Blundell

2

चौड़ाई और एप्लिकेशन विजेट की ऊंचाई बदलने के लिए अपने लेआउट के लिए दो अलग-अलग android:layout_height और android:layout_width आकार को परिभाषित (res/layout-port और res/layout-land में)। फिर अपने appwidgetinfo.xml में बड़े चौड़ाई और ऊंचाई को परिभाषित करें। इस तरह, ऐप विजेट बदलता है जब अभिविन्यास बदल जाता है और न केवल जब आप होमस्क्रीन पर विजेट जोड़ते हैं।

0

यदि आप अपने विजेट को गतिशील रूप से अपडेट करने के लिए रिमोट व्यू का उपयोग कर रहे हैं तो आप UpdateAppWidget फ़ंक्शन कॉल में दो अलग रिमोट व्यू की आपूर्ति कर सकते हैं। उदाहरण के लिए:

@Override 
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { 
    RemoteViews rvLandscape=new Remoteviews(context,R.layout.widget_landscape); 
    rvLandscape.addView(... 
    : 

    RemoteViews rvPortrait =new Remoteviews(context, R.layout.widget_portrait); 
    rvPortrait.addView(... 
    : 

    appWidgetManager.updateAppWidget(widgetId, new RemoteViews(rvLandscape, rvPortrait)); 
} 
संबंधित मुद्दे