2013-08-21 14 views
23

मैंने एंड्रॉइड कोड लिखा है जो एक पॉप-अप संवाद दिखाता है लेकिन मैं पृष्ठभूमि रंग को काला से सफेद, और फिर लेखन का रंग बदलना चाहता हूं।पॉप-अप संवाद का पृष्ठभूमि रंग बदलें

mPrefs = PreferenceManager.getDefaultSharedPreferences(this); 

    Boolean welcomeScreenShown = mPrefs.getBoolean(welcomeScreenShownPref, false); 

    if (!welcomeScreenShown) { 


     String whatsNewText = getResources().getString(R.string.Text); 
     new AlertDialog.Builder(this).setMessage(whatsNewText).setPositiveButton(
       R.string.ok, new DialogInterface.OnClickListener(){ 
      public void onClick(DialogInterface dialog, int which) { 
       dialog.dismiss(); 
      } 
     }).show(); 
     SharedPreferences.Editor editor = mPrefs.edit(); 
     editor.putBoolean(welcomeScreenShownPref, true); 
     editor.commit(); // Very important to save the preference 
    } 

उत्तर

43

तुम सिर्फ एक प्रकाश विषय चाहते हैं और विशेष रूप से विशिष्ट रंग के बारे में नहीं कर रहे हैं, तो आप एक विषय आईडी AlertDialog.Builder निर्माता को पारित कर सकते हैं। अपने व्यास पर

AlertDialog.Builder dialog = new AlertDialog.Builder(getContext()); 
Dialog dialog = dialog.create(); 
dialog.show(); 

बुला शो के बाद():

AlertDialog.Builder(this, AlertDialog.THEME_HOLO_LIGHT)... 

या

AlertDialog.Builder(this, AlertDialog.THEME_DEVICE_DEFAULT_LIGHT)... 
+0

यह पूरी तरह से काम करता है – Rick

+0

महान उत्तर +1 –

+3

यह कहता है कि अब बहिष्कृत है? अब ऐसा करने के लिए कोई सुझाव? – Dinesh

-1

चेतावनी संवाद बिल्डर पर उपयोग setInverseBackgroundForced(true) पृष्ठभूमि को उलटने के लिए:

यह संवाद का कोड है।

+2

यह काम नहीं करता है: \ – Rick

2

आप एक कस्टम अलर्टडिअलॉग बना सकते हैं और एक एक्सएमएल लेआउट का उपयोग कर सकते हैं। लेआउट में, आप पृष्ठभूमि रंग और टेक्स्ट रंग सेट कर सकते हैं।

कुछ इस तरह:

Dialog dialog = new Dialog(this, android.R.style.Theme_Translucent_NoTitleBar); 
LayoutInflater inflater = (LayoutInflater)ActivityName.this.getSystemService(LAYOUT_INFLATER_SERVICE); 
View layout = inflater.inflate(R.layout.custom_layout,(ViewGroup)findViewById(R.id.layout_root)); 
dialog.setContentView(view); 
+1

लेकिन क्या मैं बस इन सभी चीजों के बिना रंग बदलने के लिए कोड की एक पंक्ति जोड़ सकता हूं? – Rick

+7

मई आप इसे आजमा सकते हैं: getWindow()। SetBackgroundDrawableResource (android.R.color.white); – Sushil

+0

यह – Rick

20

क्रेडिट हमेशा की तरह Sushil

को जाता बनायें अपने AlertDialog लॉग इन करें, इस तरह पृष्ठभूमि रंग सेट करें:

dialog.getWindow().setBackgroundDrawableResource(android.R.color.background_dark); 
+3

सावधान रहें। हालांकि यह पृष्ठभूमि रंग सेट करेगा, आप पिछले पृष्ठभूमि को बदलने योग्य बदल देंगे, जिसमें चौड़ाई आयाम शामिल है। आपके परिणामस्वरूप संवाद अलग-अलग आकार हो सकते हैं यदि आपने पृष्ठभूमि को खींचने योग्य अपडेट नहीं किया है। – tir38

43

@ डेन व्हाइट के उत्तर पर विस्तार करने के लिए, आपको अंतर्निहित थीम पर भरोसा नहीं करना है। आप आसानी से अपनी शैली की आपूर्ति कर सकते हैं:

<style name="MyDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert"> 
    <item name="android:background">@color/myColor</item> 
</style> 

और उसके बाद बिल्डर निर्माता में लागू:

AlertDialog alertDialog = new AlertDialog.Builder(getContext(), R.style.MyDialogTheme) 
     ... 
     .create(); 

यह काम करना चाहिए कि क्या आप android.support.v7.app.AlertDialog या android.app.AlertDialog

यह भी की तुलना में बेहतर काम करता है का उपयोग कर रहे @ डमीडाटा का जवाब क्योंकि आप संवाद का आकार बदल नहीं सकते हैं। यदि आप खिड़की की पृष्ठभूमि को खींचने योग्य सेट करते हैं तो आप कुछ मौजूदा आयामी सूचनाओं को ओवरराइट करते हैं और एक संवाद प्राप्त करते हैं जो मानक चौड़ाई नहीं है।

यदि आप थीम पर पृष्ठभूमि सेट करते हैं और डायलॉग पर थीम सेट करते हैं तो आप एक संवाद के साथ समाप्त हो जाएंगे जो रंगीन है लेकिन अभी भी सही चौड़ाई है।

+0

अंत में! कार्य समाधान आपका बहुत बहुत धन्यवाद। – DmitryKanunnikoff

1

किसी भी संवाद के लिए myDialog कहा जाता है, myDialog.show(); बुला के बाद आप कॉल कर सकते हैं:

myDialog.getWindow().getDecorView().getBackground().setColorFilter(new LightingColorFilter(0xFF000000, CUSTOM_COLOR)); 

, जहां CUSTOM_COLOR 8 अंकों हेक्स प्रारूप में है पूर्व। 0xFF303030। यहां, FF अल्फा मान है और बाकी हेक्स में रंग मान है।

-1

केवल अपना आयात अपडेट करें।

import android.app.AlertDialog; 

को
import android.support.v7.app.AlertDialog; 

यह तय कर दिया जाएगा।

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