मैं एंड्रॉइड में एक डायलॉग बॉक्स से काली पृष्ठभूमि कैसे हटा सकता हूं। तस्वीर समस्या को दिखाती है।
final Dialog dialog = new Dialog(Screen1.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.themechanger);
मैं एंड्रॉइड में एक डायलॉग बॉक्स से काली पृष्ठभूमि कैसे हटा सकता हूं। तस्वीर समस्या को दिखाती है।
final Dialog dialog = new Dialog(Screen1.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.themechanger);
जवाबों:
इस कोड को जोड़ें
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
या यह एक के बजाय:
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
dialog.getWindow().setBackgroundDrawable(new ColorDrawableResource(R.color.transparent));
dialog.getWindow().setBackgroundDrawableResource(R.color.transparent);
<style name="NewDialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowTitleStyle">@null</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
<item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
<item name="android:backgroundDimEnabled">false</item>
<item name="android:background">@android:color/transparent</item>
</style>
जावा में उपयोग करें
Dialog dialog = new Dialog(this, R.style.NewDialog);
मुझे आशा है कि आपकी मदद करेंगे!
मैंने सरल समस्या का सामना किया है और जो समाधान मैं लेकर आया हूं वह एक पारदर्शी बाचग्राउंड थीम लागू कर रहा था। अपनी शैली में इन पंक्तियों को लिखें
<item name="android:windowBackground">@drawable/blue_searchbuttonpopupbackground</item>
</style>
<style name="Theme.Transparent" parent="android:Theme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
और फिर जोड़ें
android:theme="@style/Theme.Transparent"
आपकी मुख्य मेनिफ़ेस्ट फ़ाइल में, संवाद गतिविधि के ब्लॉक के अंदर।
साथ ही आपकी संवाद गतिविधि XML सेट में
android:background= "#00000000"
किसी तरह से Zacharias समाधान मेरे लिए काम नहीं किया तो मैं इस विषय को हल करने के लिए नीचे विषय का उपयोग किया है ...
<style name="DialogCustomTheme" parent="android:Theme.Holo.Dialog.NoActionBar">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:colorBackgroundCacheHint">@null</item>
</style>
नीचे इस विषय को संवाद के लिए सेट किया जा सकता है
final Dialog dialog = new Dialog(this, R.style.DialogCustomTheme);
का आनंद लें!!
आप इसका उपयोग कर सकते हैं:
setBackgroundDrawable(null);
विधि। निम्नलिखित में डॉक्टर है:
/**
* Set the background to a given Drawable, or remove the background. If the
* background has padding, this View's padding is set to the background's
* padding. However, when a background is removed, this View's padding isn't
* touched. If setting the padding is desired, please use
* {@link #setPadding(int, int, int, int)}.
*
* @param d The Drawable to use as the background, or null to remove the
* background
*/
डायलॉग पॉप अप डिफॉल्ट ब्लैक बैकग्राउंड कलर या थीम कलर को भरें ताकि आपको TRANSPARENT
डायलॉग में बैकग्राउंड सेट करना पड़े । नीचे दिए गए कोड की कोशिश करें: -
final Dialog dialog = new Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
dialog.setContentView(R.layout.splash);
dialog.show();
यदि आप संवाद की गहरी पृष्ठभूमि को नष्ट करना चाहते हैं, तो इसका उपयोग करें
dialog.getWindow().setDimAmount(0);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Objects.requireNonNull(alertDialog.getWindow()).setDimAmount(0); }
सभी मौजूदा उत्तरों के साथ एक मुद्दा मुझे यह मिला कि मार्जिन संरक्षित नहीं है। ऐसा इसलिए है क्योंकि वे सभी android:windowBackground
विशेषता को ओवरराइड करते हैं, जो मार्जिन के लिए एक ठोस रंग के साथ जिम्मेदार है। हालाँकि, मैंने एंड्रॉइड एसडीके में कुछ खुदाई की और डिफ़ॉल्ट विंडो बैकग्राउंड को देखने योग्य पाया, और पारदर्शी संवादों की अनुमति देने के लिए इसे थोड़ा संशोधित किया।
सबसे पहले, अपने प्रोजेक्ट के लिए /platforms/android-22/data/res/drawable/dialog_background_material.xml कॉपी करें। या, बस इन पंक्तियों को एक नई फ़ाइल में कॉपी करें:
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:inset="16dp">
<shape android:shape="rectangle">
<corners android:radius="2dp" />
<solid android:color="?attr/colorBackground" />
</shape>
</inset>
जो सूचना android:color
पर सेट किया गया है ?attr/colorBackground
। यह डिफ़ॉल्ट ठोस ग्रे / सफेद है जिसे आप देखते हैं। android:background
अपनी कस्टम शैली में परिभाषित रंग को पारदर्शी बनाने के लिए और पारदर्शिता दिखाने के लिए, हमें बस इतना करना है कि इसे बदलना ?attr/colorBackground
है @android:color/transparent
। अब यह इस तरह दिखेगा:
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:inset="16dp">
<shape android:shape="rectangle">
<corners android:radius="2dp" />
<solid android:color="@android:color/transparent" />
</shape>
</inset>
उसके बाद, अपने विषय पर जाएं और इसे जोड़ें:
<style name="MyTransparentDialog" parent="@android:style/Theme.Material.Dialog">
<item name="android:windowBackground">@drawable/newly_created_background_name</item>
<item name="android:background">@color/some_transparent_color</item>
</style>
बदलने के लिए सुनिश्चित करें कि newly_created_background_name
आपने अभी बनाया drawable फ़ाइल का वास्तविक नाम के साथ, और की जगह some_transparent_color
वांछित पारदर्शी पृष्ठभूमि के साथ।
उसके बाद हम सभी को विषय निर्धारित करने की आवश्यकता है। इसे बनाते समय इसका उपयोग करें AlertDialog.Builder
:
AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.MyTransparentDialog);
फिर बस हमेशा की तरह संवाद बनाएं, बनाएं और दिखाएं!
यही मैंने AlertDialog के साथ पारभासी हासिल करने के लिए किया।
एक कस्टम शैली बनाई गई:
<style name="TranslucentDialog" parent="@android:style/Theme.DeviceDefault.Dialog.Alert">
<item name="android:colorBackground">#32FFFFFF</item>
</style>
और फिर के साथ संवाद बनाएँ:
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.TranslucentDialog);
AlertDialog dialog = builder.create();
इन स्टाइल कोड को स्टाइल में सेट करें
<style name="Theme.Transparent" parent="android:Theme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
और बस असत्य को सत्य से नीचे की रेखा में बदलें
<item name="android:backgroundDimEnabled">true</item>
यह आपकी पृष्ठभूमि को मंद कर देगा।
ध्यान दें: पृष्ठभूमि बदलने के लिए बिल्डर का उपयोग न करें।
Dialog dialog = new Dialog.Builder(MainActivity.this)
.setView(view)
.create();
dialog.show();dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
में बदलो
Dialog dialog = new Dialog(getActivity());
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(view);
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
dialog.show();
डायलॉग.बिल्डर का उपयोग करते समय, इसमें getWindow()
विकल्प नहीं दिया गया है।
Window window = d.getWindow();
window.setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
यह मेरा तरीका है, आप कोशिश कर सकते हैं!
यदि आपने DialogFrament
कक्षा को बढ़ा दिया है , तो आप निम्न विषय निर्धारित कर सकते हैं:
setStyle(DialogFragment.STYLE_NORMAL, R.style.customDialogTheme);
और फिर अपनी शैलियों में कस्टम थीम बनाएं। xml फ़ाइल (मापदंडों के लिए @ LongLv का उत्तर देखें)
<item name="android:windowCloseOnTouchOutside">true</item>
यदि उपयोगकर्ता संवाद के बाहर छूता है तो आप डायलॉग को बंद करना चाहते हैं तो जोड़ना न भूलें ।
सुनिश्चित करें कि R.layout.themechanger
कोई पृष्ठभूमि रंग नहीं है क्योंकि डिफ़ॉल्ट रूप से संवाद में डिफ़ॉल्ट पृष्ठभूमि रंग होता है।
आपको भी जोड़ना होगा dialog.getWindow().setBackgroundDrawable(newColorDrawable(Color.TRANSPARENT));
और अंत में
<style name="TransparentDialog">
<item name="android:windowIsFloating">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowTitleStyle">@null</item>
</style>