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


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.