web-dev-qa-db-ja.com

Androidで透明な背景を持つダイアログ

Androidのダイアログボックスから黒い背景を削除するにはどうすればよいですか。写真は問題を示しています。

enter image description here

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

このコードを追加

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

編集する

dialog.getWindow().setBackgroundDrawableResource(Android.R.color.transparent);
615
<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>

javaで使用する

Dialog dialog = new Dialog(this, R.style.NewDialog);

助けてください!

75
LongLv

私はもっ​​と簡単な問題に直面し、私が思いついた解決策は透明な背景のテーマを適用することでした。これらの行をあなたのスタイルで書く

    <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"
27
Fahad Ishaque

どういうわけか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); 

楽しい!!

14
Ravi K. Sharma

ダイアログはデフォルトの黒い背景色またはテーマ色を塗りつぶすので、TRANSPARENT背景をDialogに設定する必要があります。以下のコードを試してください: -

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

あなたが使用することができます:

setBackgroundDrawable(null);

method.and次はdocです。

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

既存のすべての回答で私が見つけた1つの問題は、マージンが維持されていないということです。これは、余白の原因となるAndroid:windowBackground属性を無地の色でオーバーライドするためです。しかし、私はAndroid SDKを少し掘り下げて、デフォルトのウィンドウの背景が描画可能であることを見つけ、そして透明なダイアログを許可するためにそれを少し修正しました。

まず、/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を作成したばかりの描画可能ファイルの実際の名前に置き換え、some_transparent_colorを目的の透明な背景に置き換えます。

その後は、テーマを設定するだけです。 AlertDialog.Builderを作成するときにこれを使用します。

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

それから通常どおりにダイアログを構築、作成、および表示するだけです。

7
IvonLiu

あなたのコードでこれを試してください:

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

それは間違いなく動作します...私の場合は...!私の友人

3
jigar

ZGnepと同じ解決策ですが、xmlを使用します。

Android:background="@null"
3
XST

これが私が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();
3
Dileep P G

このコードを使ってください。

    Dialog dialog = new Dialog(getActivity(),Android.R.style.Theme_Translucent_NoTitleBar);
    dialog.show();
1
a.hammad

これらのスタイルコードを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>

そして、以下のように単純にfalseをtrueに変更してください。

<item name="Android:backgroundDimEnabled">true</item>

それはあなたの背景を薄暗くします。

1
Neeraj Pawar

注意:

背景変更にビルダーを使用しない

 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);
mDialog.show();

Dialog.builderを使用する場合 - その中にgetwindow()オプションを与えていません。

1
Rasoul Miri

カスタムクラスでカスタムダイアログを使用する人は、クラスの透明度を変更する必要があります。この行をonCreate()に追加します。

getWindow().setBackgroundDrawableResource(Android.R.color.transparent);
0
Haider Malik

あなたがダイアログの暗い背景を破壊したい場合はこれを使用してください

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

これは私の方法です、あなたは試すことができます!

0
Hello Sun

DialogFramentクラスを拡張した場合は、テーマを次のように設定できます。

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

そして、あなたのstyles.xmlファイルにカスタムテーマを作ります(パラメータについては@ LongLvの答えを見てください)

ユーザーがダイアログの外側をタッチしたときにダイアログを閉じたい場合は、<item name="Android:windowCloseOnTouchOutside">true</item>を追加することを忘れないでください。

0
B.Cakir

私の場合、解決策は次のようになります。

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

そしてカスタムダイアログのXmlでは:

Android:alpha="0.8"
0
Sagar Shah