2010-07-19 19 views
12

पर लंबवत केंद्रित नहीं है, मैंने अपने गेम के अंत में प्रदर्शित होने के लिए कस्टम अलर्ट संवाद बॉक्स बनाया है ताकि खिलाड़ी इसे सहेजने के लिए अपना नाम दर्ज कर सके। समस्या यह है कि जब मैं संवाद पर show() पर कॉल करता हूं लेकिन यह लंबवत केंद्रित नहीं है! यह इससे थोड़ा कम है और इससे कोई फर्क नहीं पड़ता कि मैं एक्सएमएल में क्या गुण रखता हूं या setGravity() का उपयोग करते समय।कस्टम अलर्ट संवाद एंड्रॉइड

मुझे लगता है कि यह the one mentioned here जैसा ही समस्या है, लेकिन किसी ने भी उचित उत्तर नहीं दिया है।

आपकी मदद के लिए धन्यवाद।

AlertDialog.Builder builder; 

    LayoutInflater inflater = (LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE); 
    View layout = inflater.inflate(R.layout.newrecord,(ViewGroup)findViewById(R.layout.shoot)); 

    builder = new AlertDialog.Builder(this); 
    builder.setView(layout); 

    newRecDialog = builder.create(); 

यहाँ और newrecord.xml की एक्सएमएल लेआउट के पहले तत्व का कोड है::

अधिक जानकारी के लिए, यहाँ मेरी कोड है

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_height="fill_parent" 
android:layout_width="fill_parent" 
android:gravity="center" 
android:padding="10dp" 
android:baselineAligned="true"> 

यहाँ उत्पादन स्क्रीनशॉट है: alt text http://the.niox.free.fr/divers/dialog_offset.png

उत्तर

0

अपने अलर्टडिअलॉग पर android:gravity="center" या प्रोग्रामेटिक रूप सेके रूप में विशेषता सेट करें। यह गुरुत्वाकर्षण केवल आपके मोबाइल के प्रदर्शन के लिए नहीं है। यदि आप कस्टम शीर्षक का उपयोग करते हैं तो यह केंद्र लंबवत जैसा नहीं दिखता है।

+0

मैं पहले से ही यह सब करने की कोशिश की:

<style name="CustomDialog" parent="@android:style/Theme.Dialog"> <item name="android:windowNoTitle">true</item> </style> 

तब संवाद बिल्डर के लिए अपनी शैली लागू और यह काम नहीं करता है। मेरी एक्सएमएल फ़ाइल वास्तव में संवाद बॉक्स की सामग्री का विवरण है जो मैं फुलाता हूं, क्या यह गलत है? – NioX5199

+0

मैं आपको ठीक से नहीं मिल सकता। लेकिन किसी भी तरह से दृश्य की सामग्री गुरुत्वाकर्षण को प्रभावित नहीं करती है। तो कृपया अपना कोड पोस्ट करें। मैं प्रयास करूंगा। – Praveen

+0

@ NioX5199: क्या आप अपना आउटपुट स्क्रीन शॉट पोस्ट कर सकते हैं? – Praveen

0

वास्तव में कोई जवाब नहीं है, लेकिन मुझे एक समान समस्या थी। ऐसा लगता है कि यह केंद्रित है, लेकिन यह माना जाता है कि AlerterDialog का शीर्षक सेट है। मेरे मामले में, मैंने अभी एक शीर्षक निर्धारित किया है।

3

बग का वर्णन here है। AlertDialog शीर्षक/आइकन पैनल के लिए जगह आरक्षित कर रहा है, यहां तक ​​कि न तो शीर्षक और न ही आइकन है।

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

+0

शीर्ष पैनल? आप शीर्ष पैनल लेआउट को कैसे चलाते हैं? – ThePerson

2

आप इसके लिए कस्टम अलर्ट की बजाय गतिविधि का उपयोग कर सकते हैं। आप android मैनिफ़ेस्ट फ़ाइल में संवाद के रूप में गतिविधि के विषय स्थापित करने के लिए:

android:theme="@android:style/Theme.Dialog" 

और आप अपने जरूरत के अनुसार गतिविधि XML लेआउट समायोजित कर सकते हैं।

0

क्या आप setView के बजाय AlertDialog.Builder.setCustomTitle(View); का उपयोग करने का प्रयास कर सकते हैं? हम इसका उपयोग करते हैं क्योंकि खाली शीर्षक के साथ संवाद से अलर्ट संवाद थोड़ा बेहतर दिखता है।

0

आप सबसे पहले अपने xml से कि गद्दी लाइन हटाने एक्सएमएल में निम्न पंक्ति का उपयोग करना चाहिए और उस

android:layout_gravity="center" 

इस के बाद के बाद अपने संवाद केंद्र में दिखाई देगा और यदि आप छोड़ दिया आदि से मार्जिन का उपयोग कर रहे कि को दूर से और आप उपयोग कर रहे भी अगर उस

android:layout_width="fill_parent" 

से

android:layout_width="wrap_content" 
साथ इसे बदल

उसके बाद आपका संवाद केंद्र में दिखाई देगा।

0

प्रयास करें:

newRecDialog.getWindow().getAttributes().gravity = Gravity.CENTER; 
2

आप अपने खुद के संवाद लाइन requestWindowFeature (Window.FEATURE_NO_TITLE) छुपाता शीर्षक पैनल और संवाद स्क्रीन पर केंद्रित है लागू करते हैं तो। शायद यह एक AlertDialog के साथ भी काम करता है।

1

एंड्रॉयड: थीम = "@ एंड्रॉयड: शैली/Theme.Dialog"

0

आप विंडो शीर्षक को निष्क्रिय करने की जरूरत है। सबसे पहले अपने संवाद के लिए एक कस्टम शैली बनाने के (मूल विषय है कि अपनी आवश्यकताओं फिट बैठता है का उपयोग सुनिश्चित करें):

AlertDialog.Builder builder; 

LayoutInflater inflater = (LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE); 
View layout = inflater.inflate(R.layout.newrecord,(ViewGroup)findViewById(R.layout.shoot)); 

builder = new AlertDialog.Builder(new ContextThemeWrapper(this, R.style.CustomDialog)); 
builder.setView(layout); 

newRecDialog = builder.create(); 
संबंधित मुद्दे