मुझे एक डायलॉगफ्रैगमेंट मिला है, जो आम तौर पर स्क्रीन पर केंद्रित होता है, कि यदि कोई दिखाना चाहिए, तो मैं ऑन-स्क्रीन कीबोर्ड के रास्ते से बाहर निकलने की कोशिश कर रहा हूं, क्योंकि यह एक अच्छा यूएक्स अनुभव नहीं है खिड़की के हिस्सों पर कवर करने के लिए कुंजीपटल जब पूरी तरह अप्रयुक्त स्क्रीन अचल संपत्ति दूर है।एनिमेट विंडो लेआउट बदलें
मान लीजिए कि मैंने कीबोर्ड को प्रकट करने या गायब होने का पता लगाने की समस्या हल कर दी है, उदा। How to check visibility of software keyboard in Android?।
वर्तमान में मैं कुछ इस तरह करने से रास्ते से बाहर खिड़की स्थानांतरित करने के लिए जाना:
...
final WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
params.gravity = Gravity.TOP;
params.verticalMargin = .1f; //or whatever
dialog.getWindow().setAttributes(params);
...
यह ठीक काम करता है, लेकिन खिड़की अचानक जगह है, जो एक सुखद UX अनुभव नहीं है में झटके। प्रश्न में खिड़की में एक सफल प्रवेश और निकास एनीमेशन है - और यह विंडो लेआउट परिवर्तन के बाद भी उचित रूप से काम करता है। मैं WindowManager के बीच विंडो को और कैसे एनिमेट कर सकता हूं। LayoutParams में परिवर्तन?
(मैं http://developer.android.com/reference/android/view/Window.html बजाय, कहते हैं {भीतर} यदि संभव हो तो {} के लेआउट के संदर्भ में काम कर रखना चाहते हैं /, मेरी गतिविधि के लेआउट में DialogFragment मजबूर और वहाँ के भीतर से यह एनिमेट)।
अपने AndroidManifest में, आप 'एंड्रॉयड जोड़ने की कोशिश की है: windowSoftInputMode =" stateHidden | adjustPan "' अपनी गतिविधि टैग के लिए? वह स्वचालित रूप से दिखाए गए सक्रिय दृश्य को रखने में सक्षम हो सकता है। मैं इसे अन्य सुविधाओं के लिए उपयोग करता हूं, लेकिन डायलॉग फ्रैगमेंट के साथ प्रयास नहीं किया है। – Anonsage
मैंने पहले ऐसा करने की कोशिश की थी, और मैंने इसे फिर से सुनिश्चित करने की कोशिश की। ऐसा लगता है कि गतिविधि रूट व्यू (सजावट दृश्य) को प्रभावित करता है, न कि किसी भी अन्य विंडोज़ और उनके विचार। मैं पृष्ठभूमि में कुंजीपटल के लिए गतिविधि समायोजित करता हूं (और एनीमेशन के बिना भी, आपको दिमाग में), लेकिन खिड़की बस अपरिवर्तित तैरती है। इसके अलावा, अगर किसी और को इसका सुझाव देने का लुत्फ उठाया जाता है, तो हाँ मैंने "window.setSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN) भी कोशिश की है;" डायलॉग फ्रैगमेंट में ही। – jdowdell
@jdowdell इसके बजाय 'संवाद प्लग' का उपयोग करें। –