অ্যান্ড্রয়েডে স্বচ্ছ পটভূমি সহ ডায়ালগ


247

আমি কীভাবে অ্যান্ড্রয়েডের একটি ডায়ালগ বক্স থেকে কালো পটভূমি সরিয়ে ফেলব। ছবিটি সমস্যাটি দেখায়।

এখানে চিত্র বর্ণনা লিখুন

final Dialog dialog = new Dialog(Screen1.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.themechanger); 

দয়া করে ডায়লগ তৈরির জন্য কোডটি দেখান
এমবিডিডি

: এই অবস্থা আরো কোডের এই দুই লাইন এখানে কাজ করে stackoverflow.com/questions/16186818/...
DeePanShu

এখানে সেরা উত্তরটি সন্ধান করুন লিঙ্কের বিবরণটি
কলিন্স উশি

উত্তর:


696

এই কোড যুক্ত করুন

 dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));

বা পরিবর্তে এটি একটি:

dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);

16
ধন্যবাদ! যাইহোক, আমি ব্যবহার করতে পছন্দ করিdialog.getWindow().setBackgroundDrawable(new ColorDrawableResource(R.color.transparent));
RileyE

6
এই সমাধান সাহায্য করে। ইস্যুটি হল, প্রস্থটি স্ক্রিনে ফিট করবে। সাধারণ কথোপকথনের তুলনায় কোনও প্যাডিং থাকবে না। তবে অ্যান্ড্রয়েড 4.1 এটিকে ডিফল্টরূপে পরিচালনা করে
বাসভরাজ হাম্পালি

1
আমি যদি এলার্ট ডায়ালগ ব্যবহার করি তবে কী হবে ??
আহমদ আরসলান

1
যদি আপনি কোনও ডায়ালগফ্র্যাগমেন্টের অভ্যন্তরে থাকেন তবে কেবল getDialog () গেটউইন্ডো () কল করুন ... (ভিউটি তৈরি হওয়ার পরে, যেমন আপনার অনভিউ তৈরি করা কলব্যাকে)।
akohout

14
আমি ব্যবহার করতে পছন্দ করিdialog.getWindow().setBackgroundDrawableResource(R.color.transparent);
পিটার ঝাও

82
<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);

আমি আপনাকে সাহায্য আশা করি!


এটি কাজ করবে তবে আপনি যদি স্বচ্ছ অঞ্চল সংলাপটি ক্লিক করেন তবে কীভাবে এটি পরিচালনা করবেন?
জন

2
@ জন আপনি ব্যবহার করতে পারেন: ডায়ালগ.সেটসেনসেলডঅনটচআউটসাইড (সত্য);
লংএলভি

ডিফল্ট হিসাবে বাইরের স্পর্শে প্রস্থান করতে আপনি প্যারেন্ট = "থিম.এপকম্প্যাট.ডায়ালগ" ব্যবহার করতে পারেন।
লিওনার্ট

31

আমি সহজ সমস্যার মুখোমুখি হয়েছি এবং আমি যে সমাধানটি নিয়ে এসেছি তা স্বচ্ছ ব্যাচগ্রাউন্ড থিম প্রয়োগ করা হয়েছিল। আপনার শৈলীতে এই লাইনগুলি লিখুন

    <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"

ডায়ালগ ক্রিয়াকলাপের ব্লকের ভিতরে আপনার মূল ম্যানিফেস্ট ফাইলটিতে।

আপনার ডায়লগ ক্রিয়াকলাপে এক্সএমএল সেট প্লাস

 android:background= "#00000000"

2
বা আপনি যদি ডায়লগের স্টাইলটি কেবল সেট করতে চান তবে এটি ব্যবহার করুন: <শৈলীর নাম = "থিম T ট্রান্সপারেন্ট" প্যারেন্ট = "@ অ্যান্ড্রয়েড: শৈলী / থিম D ডায়ালগ">
রুজভেল্ট

16

কোনওভাবে জাখরিয়াস সমাধান আমার পক্ষে কার্যকর হয়নি তাই আমি এই সমস্যাটি সমাধান করার জন্য নীচের থিমটি ব্যবহার করেছি ...

<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); 

উপভোগ করুন !!


1
<আইটেমের নাম = "অ্যান্ড্রয়েড: উইন্ডোব্যাকগ্রাউন্ড"> @ রঙ / স্বচ্ছ </ i> এই লাইনটি নীচের লাইনের দ্বারা প্রতিস্থাপন করা উচিত অন্যথায় আপনাকে color.xML ফাইলে স্বচ্ছের একটি মান যুক্ত করতে হবে। <আইটেমের নাম = "অ্যান্ড্রয়েড windowBackground"> @ অ্যানড্রইড: রঙ / স্বচ্ছ </ আইটেমটি>
AkhilGite

12

আপনি এটি ব্যবহার করতে পারেন:

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
    */

এটি কার্যকর হবে, তবে কেবলমাত্র আপনি যখন ডায়ালগ বাক্সটি প্রসারিত করবেন, দ্রুত সমাধান নয় তবে ভাল একটি ....
প্রোগ্রামার

11

ডায়ালগ পপ আপ পূরণ করুন ডিফল্ট কালো পটভূমির রঙ বা থিম রঙের যাতে আপনার 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();

10

আপনি যদি ডায়লগের অন্ধকার পটভূমি ধ্বংস করতে চান তবে এটি ব্যবহার করুন

dialog.getWindow().setDimAmount(0);

ধন্যবাদ. এটি আমি এটির জন্য সন্ধান করছি। এটা দুর্দান্ত।
ফররুহ হাবিবুল্লায়েভ

1
এটি সবচেয়ে সহজ উপায়ে কাজটি করে, আপনাকে ধন্যবাদ! তবে, আপনি যদি নিজের অ্যাপ্লিকেশনটি সেখানে 100% ডিভাইসগুলিতে চালিত করতে চান (আমি ন্যূনতম এসডিকে সংস্করণটি 15 এ সেট করে রেখেছি), অ্যান্ড্রয়েড নিম্নলিখিত পরামর্শ দেয়: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Objects.requireNonNull(alertDialog.getWindow()).setDimAmount(0); }
ড্যানি ইস ভ্যান ডার কোল্ক

8

বিদ্যমান বিদ্যমান উত্তরগুলির সাথে আমি খুঁজে পেয়েছি এমন একটি সমস্যা হ'ল মার্জিনগুলি সংরক্ষণ করা হয়নি। এটি কারণ তারা সমস্ত ওভাররাইড করেandroid:windowBackground একটি দৃ color় বর্ণের সাথে মার্জিনের জন্য দায়বদ্ধ বৈশিষ্ট্যটি । যাইহোক, আমি অ্যান্ড্রয়েড এসডিকে কিছু খনন করেছি এবং ডিফল্ট উইন্ডো ব্যাকগ্রাউন্ডটি আঁকতে সক্ষম পেয়েছি এবং স্বচ্ছ সংলাপগুলির অনুমতি দেওয়ার জন্য এটি কিছুটা সংশোধন করেছি।

প্রথমে, আপনার প্রকল্পে অনুলিপি / প্ল্যাটফর্মগুলি / অ্যান্ড্রয়েড ২২/২০১৮ / ডেটা / ড্রেসযোগ্য / ডায়ালগ_ব্যাকগ্রাউন্ড_ম্যাটরিয়াল.এক্সএমএল করুন। অথবা, এই লাইনগুলি কেবল একটি নতুন ফাইলে অনুলিপি করুন:

<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আপনি শুধু নির্মিত অঙ্কনযোগ্য ফাইলের প্রকৃত নাম সঙ্গে, এবং প্রতিস্থাপনsome_transparent_color এবং পছন্দসই স্বচ্ছ পটভূমিতে ।

এর পরে আমাদের থিমটি সেট করা দরকার। এটি তৈরি করার সময় এটি ব্যবহার করুন AlertDialog.Builder:

    AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.MyTransparentDialog);

তারপরে যথাযথভাবে ডায়ালগটি তৈরি করুন, তৈরি করুন এবং দেখান!


আমি এটিকে অ্যাপকম্প্যাট সতর্কতা ডায়ালগ দিয়ে অনুসরণ করেছি তবে অ্যান্ড্রয়েড: ব্যাকগ্রাউন্ড ব্যবহারের পরিবর্তে আমি ব্যাকগ্রাউন্ডের অঙ্কনযোগ্য অ্যান্ড্রয়েডের সাথে সরাসরি একটি স্বচ্ছ রঙ সেট করতে বেছে নিয়েছি: রঙ নিজেই। এটি করা দরকার কারণ, অ্যান্ড্রয়েড সেট করা: ব্যাকগ্রাউন্ড কোনও কোনও জায়গায় এখনও স্বচ্ছ নয়। তবে কৌশলটি ভাগ করে নেওয়ার জন্য ধন্যবাদ!
দিলিপ পিজি

3

ZGnep হিসাবে একই সমাধান কিন্তু এক্সএমএল ব্যবহার করে:

android:background="@null"

3

আপনার কোড এ চেষ্টা করুন:

getWindow().setBackgroundDrawableResource(android.R.color.transparent);

এটা অবশ্যই কাজ করবে ... আমার ক্ষেত্রে ...! আমার বন্ধন


3

সতর্কতা ডায়ালগের সাথে অনূদিততা অর্জন করতে আমি এটিই করেছি।

একটি কাস্টম শৈলী তৈরি করা হয়েছে:

<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();

1

আমার ক্ষেত্রে সমাধানটি এর মতো কাজ করে:

dialog_AssignTag.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));

এবং অতিরিক্ত কাস্টম ডায়ালগের এক্সএমএল:

android:alpha="0.8"

1

এটি আমার সাথে কাজ করে এই কোডটি ব্যবহার করুন:

    Dialog dialog = new Dialog(getActivity(),android.R.style.Theme_Translucent_NoTitleBar);
    dialog.show();

2
আমি মনে করি এটি ওপি এবং আরও দর্শনার্থীদের জন্য আরও পরিশ্রমী হবে, যখন আপনি নিজের ঘনিষ্ঠতায় কিছু ব্যাখ্যা যোগ করেন।
রিপোর্টার

1

এই স্টাইল কোডটি স্টাইলে সেট করুন

<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>

এটি আপনার ব্যাকগ্রাউন্ডকে ম্লান করে দেবে।


1

মনোযোগ দিন: পটভূমি পরিবর্তনের জন্য বিল্ডার ব্যবহার করবেন না।

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()বিকল্প দিচ্ছে না ।


0
Window window = d.getWindow();
window.setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,WindowManager.LayoutParams.FLAG_BLUR_BEHIND);

এই আমার উপায়, আপনি চেষ্টা করতে পারেন!


1
এটি এখন হ্রাস করা হয়েছে: @ প্রত্যাখ্যানিত অস্পষ্টতা আর সমর্থিত নয়।
আরবার্গ

0

আপনি যদি DialogFramentক্লাসটি বাড়িয়েছেন তবে আপনি থিমটি এতে সেট করতে পারেন:

setStyle(DialogFragment.STYLE_NORMAL, R.style.customDialogTheme);

এবং তারপরে আপনার স্টাইলস.এক্সএমএল ফাইলটিতে কাস্টম থিম তৈরি করুন (প্যারামিটারগুলির জন্য @ লংএলভিটির উত্তর দেখুন)

<item name="android:windowCloseOnTouchOutside">true</item>ব্যবহারকারী যদি ডায়ালগের বাইরের স্পর্শ করে তবে ডায়লগটি বন্ধ করতে চাইলে যুক্ত করতে ভুলবেন না ।


0

কাস্টম শ্রেণীর সাথে কাস্টম সংলাপ ব্যবহার করা যে কোনও ব্যক্তির জন্য আপনার ক্লাসে স্বচ্ছতা পরিবর্তন করতে হবে অনক্রিট () এ এই লাইনটি যুক্ত করুন:

getWindow().setBackgroundDrawableResource(android.R.color.transparent);

0

কথোপকথন.বিট উইন্ডো ()। সেটব্যাকগ্রাউন্ডড্রেইবল (নতুন কালারড্র্যাবেবল (কনটেক্সটকম্প্যাট.জেট কালার (সিটিএক্স, অ্যান্ড্রয়েড.আর.কমার। ট্রান্সপারেন্ট))));


0

নিশ্চিত 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>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.