2010-03-06 21 views
17

जैसा दिखता है मैं विजेट क्लिक पर एक संवाद खोलने की कोशिश कर रहा हूं। मैंने android:theme="@android:style/Theme.Dialog" के साथ क्लिक पर शुरू की गई गतिविधि को स्किन करने में समस्या हल कर दी है। दुर्भाग्य से मैं एक संवाद के समान रूप तक नहीं पहुंच सकता।एंड्रॉइड गतिविधि को डायलॉग

Dialog from widget

इसके बजाय, मैं (, बटन के अलावा निश्चित रूप से) इस परिणाम तक पहुँचने के लिए चाहते हैं:

Desired dialog from widget

(विजेट संवाद

यह नतीजा है आप स्क्रीन को धक्का देकर देख सकते हैं)

जैसा कि आप देख सकते हैं कि कुछ अंतर हैं: रंग सूची आइटम, पाठ का रंग और सूची आइटम विभाजक। मानक संवाद के समान रूप को प्राप्त करने के लिए कोई पूर्वनिर्धारित थीम/शैली है? यदि नहीं, तो उस परिणाम तक पहुंचने के लिए क्या कदम हैं?

मैंने देखा है कि फॉक्सिंग द्वारा प्रदान किए गए विजेट में वह व्यवहार है जो मैं चाहता हूं। ,

 Context mContext = this; 
     Dialog dialog = new Dialog(mContext); 

     dialog.setContentView(R.layout.data_dialog); 
     dialog.setTitle("Your title"); 

     AlertDialog.Builder builder; 
     AlertDialog alertDialog; 

     LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE); 
     View layout = inflater.inflate(R.layout.data_dialog, 
       (ViewGroup) findViewById(R.id.AbsoluteLayout01)); 

     builder = new AlertDialog.Builder(mContext); 
     builder.setView(layout); 
     alertDialog = builder.create(); 
     alertDialog.show(); 

     final EditText txtUsername = (EditText) layout.findViewById(R.id.txtUsername); 

     final AlertDialog thisDialog = alertDialog; 

     Button btnSave = (Button) layout.findViewById(R.id.btnSave); 
     btnSave.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 

       String strtxtUsername = txtUsername.getText().toString(); 

       //do something... 

      } 
     });     

संवाद को बंद करने के लिए thisDialog.dismiss();

फोन शैली एक चिह्न और एक के साथ एक ListView साथ नियमित रूप से Theme.Light.NoTitleBar की तरह दिखता है:

उत्तर

22

क्यों एक पारदर्शी पृष्ठभूमि लेआउट

के साथ एक "पारंपरिक" मुख्य गतिविधि उपयोग करने और उससे एक मानक संवाद फोन नहीं?

... अच्छा अगर मैं आपको सही ढंग से समझता हूं, तो यह चाल बहुत आसान तरीके से कर देगा, है ना?

+0

हाँ ... मुझे लगता है कि इतनी ... मेरे प्रयास करते हैं ... – Matroska

+5

यह काम करता है। मैंने एंड्रॉइड के साथ एक गतिविधि स्थापित की है: थीम = "@ एंड्रॉइड: स्टाइल/थीम। ट्रांसस्क्लेंट। नॉट टिटलेबार" और फिर डायलॉग रद्द/क्लिक पर गतिविधि खत्म करने के लिए ध्यान रखने के लिए एक सूची संवाद बनाने के लिए सरल कोड का उपयोग किया। – Matroska

+0

यह सुनकर अच्छा लगा कि यह आपके इच्छित तरीके से काम करता है। चीयर्स, एच। – Hubert

3

आप गतिशील रूप से इस तरह संवाद बना सकते हैं शीर्षक-टेक्स्ट-।

आशा है कि मदद करता है!

+0

समस्या यह है कि विजेट को दबाए जाने पर इसे कैसे कॉल करें। यह एक गतिविधि के अंदर होना चाहिए ... और एक गतिविधि हमेशा कुछ सही दिखाना चाहिए? – Matroska

+0

ओह, क्षमा करें, मैंने आपको गलत समझा। को 'एंड्रॉयड गतिविधि की थीम सेट करके देखें: विषय =" @ एंड्रॉयड: शैली/Theme.Translucent.NoTitleBar "' – Nick

0

वास्तव में नीचे दिए गए सुझावों के मुकाबले ऐसा करने का एक बहुत आसान तरीका है।
पर एक नज़र डालें: https://developer.android.com/guide/topics/ui/dialogs.html शीर्षक "एक सूची जोड़ना" शीर्षक के नीचे।

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