Androidのダイアログボックスから黒い背景を削除するにはどうすればよいですか。写真は問題を示しています。
final Dialog dialog = new Dialog(Screen1.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.themechanger);
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);
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>
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"
どういうわけかザカリアのソリューションは私のために機能しなかったので、この問題を解決するために以下のテーマを使用しました...
<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);
method.Andはドキュメントです:
/**
* 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); }
既存のすべての回答で私が見つけた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);
次に、通常どおりにダイアログを作成、作成、表示します。
これは、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>
そして、単に行の下で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);
dialog.show();
Dialog.builderを使用する場合、それにgetWindow()
オプションはありません。
Window window = d.getWindow();
window.setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
これが私のやり方です、あなたは試すことができます!
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>