Androidのダイアログボックスから黒い背景を削除するにはどうすればよいですか。写真は問題を示しています。
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);
<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);
助けてください!
私はもっと簡単な問題に直面し、私が思いついた解決策は透明な背景のテーマを適用することでした。これらの行をあなたのスタイルで書く
<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);
楽しい!!
ダイアログはデフォルトの黒い背景色またはテーマ色を塗りつぶすので、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();
あなたが使用することができます:
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
*/
既存のすべての回答で私が見つけた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);
それから通常どおりにダイアログを構築、作成、および表示するだけです。
あなたのコードでこれを試してください:
getWindow().setBackgroundDrawableResource(Android.R.color.transparent);
それは間違いなく動作します...私の場合は...!私の友人
ZGnepと同じ解決策ですが、xmlを使用します。
Android:background="@null"
これが私が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();
このコードを使ってください。
Dialog dialog = new Dialog(getActivity(),Android.R.style.Theme_Translucent_NoTitleBar);
dialog.show();
これらのスタイルコードを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>
それはあなたの背景を薄暗くします。
注意:
背景変更にビルダーを使用しない
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()オプションを与えていません。
カスタムクラスでカスタムダイアログを使用する人は、クラスの透明度を変更する必要があります。この行をonCreate()に追加します。
getWindow().setBackgroundDrawableResource(Android.R.color.transparent);
あなたがダイアログの暗い背景を破壊したい場合はこれを使用してください
dialog.getWindow().setDimAmount(0);
Window window = d.getWindow();
window.setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
これは私の方法です、あなたは試すことができます!
DialogFrament
クラスを拡張した場合は、テーマを次のように設定できます。
setStyle(DialogFragment.STYLE_NORMAL, R.style.customDialogTheme);
そして、あなたのstyles.xmlファイルにカスタムテーマを作ります(パラメータについては@ LongLvの答えを見てください)
ユーザーがダイアログの外側をタッチしたときにダイアログを閉じたい場合は、<item name="Android:windowCloseOnTouchOutside">true</item>
を追加することを忘れないでください。
私の場合、解決策は次のようになります。
dialog_AssignTag.getWindow().setBackgroundDrawable(new ColorDrawable(Android.graphics.Color.TRANSPARENT));
そしてカスタムダイアログのXmlでは:
Android:alpha="0.8"