जब हम एंड्रॉइड में एक अलर्टडिअलॉग दिखाते हैं तो यह स्क्रीन के केंद्र में दिखाता है। क्या स्थिति बदलने का कोई तरीका है?स्क्रीन की किसी भी स्थिति में AlertDialog दिखाएँ
उत्तर
विभिन्न पदों में खोज करने के बाद मुझे समाधान मिला है।
कोड के नीचे पोस्ट किया जाता है:
private CharSequence[] items = {"Set as Ringtone", "Set as Alarm"};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
if(item == 0) {
} else if(item == 1) {
} else if(item == 2) {
}
}
});
AlertDialog dialog = builder.create();
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
WindowManager.LayoutParams wmlp = dialog.getWindow().getAttributes();
wmlp.gravity = Gravity.TOP | Gravity.LEFT;
wmlp.x = 100; //x position
wmlp.y = 100; //y position
dialog.show();
यहाँ एक्स स्थिति के मूल्य पिक्सल बाएं से दाएं है। वाई स्थिति मान के लिए नीचे से ऊपर तक है।
आप उदाहरण के लिए progressdialog नीचे ले जाने के एक सा आगे है, और exakt पिक्सेल स्थिति सेट नहीं चाहते हैं, तो इस के लिए पर्याप्त है:
progressDialog.getWindow().getAttributes().verticalMargin = 0.2F;
सेटिंग की जानकारी प्रभाव में आ बनाने के लिए, मैं निम्नलिखित जोड़ा कोड
dialog.getWindow().setAttributes(wmlp);
परिवर्तन के बाद gypsicoder के जवाब में wmlp का मूल्य, या wmlp की स्थापना अपने परीक्षण से प्रभाव में नहीं ले करता है।
ये उत्तर अलर्टडिअलॉग की स्थिति को स्थानांतरित करेंगे, हालांकि, प्रदर्शित संवाद की स्थिति में संवाद के चारों ओर पैडिंग भी शामिल होगी।
यदि आप इस पैडिंग से छुटकारा पाने के लिए चाहते हैं (उदाहरण के लिए, स्क्रीन के नीचे अपने संवाद को फ्लश करने के लिए), तो आपको विंडो को बैकग्राउंड सेट करने के लिए अपनी शैलियों में डिफ़ॉल्ट अलर्टडिअलॉग शैली को ओवरराइड करने की भी आवश्यकता होगी। शून्य, इस तरह:
<resources>
<!-- Example app theme - mine uses the below -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:alertDialogTheme">@style/MyDialogTheme</item>
</style>
<style name="MyDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert">
<!-- Full width -->
<item name="android:layout_width">fill_parent</item>
<!-- Null window background kills surrounding padding -->
<item name="android:windowBackground">@null</item>
<item name="android:windowNoTitle">true</item>
</style>
</resources>
साथ ही साथ विंडो को सेट करना। स्वीकार्य उत्तर में वर्णित पैराआउट पैरामीटर।
@ डेविड कैंट के लिए विशेष चिल्लाओ जिसका उत्तर: remove border, padding from Dialog इस तस्वीर को पूरा किया।
- 1. किसी भी स्थिति
- 2. दिखाएँ डिव जब स्क्रॉल स्थिति
- 3. वरीयता स्क्रीन से AlertDialog कैसे खोलें?
- 4. AlertDialog
- 5. टूलटिप दिखाएँ
- 6. AlertDialog
- 7. AlertDialog
- 8. स्क्रीन पर एक विंडो की स्थिति
- 9. विंडो की सामग्री दिखाएँ क्लिपबोर्ड
- 10. किसी ग्रहण में कर्सर की स्थिति कैसे प्राप्त करें TextEditor
- 11. किसी स्थिति के किसी भी तत्व के लिए स्थिति रखने के लिए पाइथोनिक तरीका
- 12. एंड्रॉइड AlertDialog
- 13. एंड्रॉयड: AlertDialog
- 14. दिखाएँ/jQuery
- 15. CSS3-3d रूपांतरित तत्वों की स्क्रीन स्थिति कैसे प्राप्त करें?
- 16. एक AlertDialog
- 17. AlertDialog setOnDismissListener
- 18. प्रक्रिया की स्थिति की स्थिति
- 19. किसी ने भी जीडीबी में रिवर्स-डिबगिंग की कोशिश की?
- 20. किसी भी शाखा में किसी भी शाखा में मौजूद किसी भी शाखा को सूचीबद्ध करें
- 21. वेब ब्राउज़र नियंत्रण में किसी तत्व की स्थिति कैसे खोजें?
- 22. मैं SQLite कॉलम में किसी वर्ण की स्थिति कैसे ढूंढूं?
- 23. jquery पृष्ठ की वर्तमान स्क्रीन शीर्ष स्थिति कैसे प्राप्त करें?
- 24. किसी भी अधिसूचना के बिना स्थिति बार फ्रेम परिवर्तन
- 25. दिखाएँ ncrunch
- 26. स्विंग तत्व की स्क्रीन स्थिति कैसे प्राप्त करें?
- 27. स्क्रीन को कुछ स्थिति पर ले जाएं
- 28. किसी सूची के भीतर किसी तत्व की स्थिति पाएं
- 29. एंड्रॉइड में डायलॉग फ्रैगमेंट की स्थिति
- 30. चेतावनी दिखाएँ
आप एक कस्टम अलर्ट संवाद भी बना सकते हैं। मैंने हाल ही में यह किया है और फिर डिस्प्ले चौड़ाई और ऊंचाई प्राप्त करना था और उसके बाद X और Y को उन मानों के प्रतिशत के आधार पर सेट करना था, जिस तरह लेआउट अच्छी तरह से स्केल किया गया था। http://developer.android.com/guide/topics/ui/dialogs.html#CustomDialog – Roloc
यह काम करता है लेकिन मुझे इसे जोड़ना पड़ा: WMLP.gravity = Gravity.TOP | Gravity.LEFT; अन्यथा एक्स और वाई मान स्क्रीन के केंद्र से ऑफ़सेट के रूप में उपयोग किए जाते थे। – BoD
बस अनुभव साझा करने के लिए: ऊपर दिया गया कोड केवल तब तक काम करता है जब तक कि संवाद पूरी तरह से स्क्रीन पर रह सके। उदाहरण के लिए, यदि नया वाई-समन्वय बहुत बड़ा है, तो संवाद स्क्रीन पर सबसे कम स्थिति में स्थानांतरित हो जाता है जो अभी भी संपूर्ण संवाद दिखाता है। यहां का मुश्किल हिस्सा यह है कि लेआउट पैरामीटर के एक्स और वाई मान अब संवाद विंडो के ऊपरी बाएं कोने के निर्देशांक नहीं दिखाते हैं और उदाहरण के लिए विंडो के सापेक्ष आंदोलन की गणना के लिए उपयोग नहीं किए जा सकते हैं मोशनवेन्ट पर प्रतिक्रिया। – Nantoka