web-dev-qa-db-ja.com

ダイアログからボーダーとパディングを削除

私はテーマTheme.Transparentのアクティビティがあります:

<style name="Theme.Transparent" parent="Android:Theme.Dialog">
    <item name="Android:windowIsTranslucent">true</item>
    <item name="Android:windowNoTitle">false</item>
    <item name="Android:windowIsFloating">true</item>
    <item name="Android:backgroundDimEnabled">false</item>
    <item name="Android:gravity">top</item>
</style>

境界線とその周囲のパディングを取り除こうとしています。画面の水平方向を塗りつぶします。灰色の境界線はありません。助けてください :) enter image description here

26
Guy

カスタムテーマを参照するダイアログを必ず作成してください。

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

カスタムテーマは、画面いっぱいに表示され、いくつかの Androidフレームワークのデフォルト を無効にする必要があります。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MyDialogTheme" parent="Android:Theme.Dialog">
        <!-- Fill the screen -->
        <item name="Android:layout_width">fill_parent</item>
        <item name="Android:layout_height">fill_parent</item>

        <!-- No backgrounds, titles or window float -->
        <item name="Android:windowBackground">@null</item>
        <item name="Android:windowNoTitle">true</item>
        <item name="Android:windowIsFloating">false</item>      

        <!-- Just to prove it's working -->
        <item name="Android:background">#ff0000</item>
    </style>

</resources>
79

上記と同じですが、xmlではなくコードで実行するとうまくいきました。

    getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
13
user3633840

幅と高さを親コンテナに一致するように設定します。

    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    WindowManager.LayoutParams wmlp = dialog.getWindow()
            .getAttributes();
    wmlp.width = Android.view.WindowManager.LayoutParams.MATCH_PARENT;
    wmlp.height = Android.view.WindowManager.LayoutParams.WRAP_CONTENT;
5

以下は私にとって完璧に機能します。全幅ダイアログ(パディングなしで画面の幅を満たす)を使用できますが、高さはwrap_contentを使用し、ビルダーで行う他のすべてのスタイルを保持します。

<item name="windowMinWidthMajor">100%</item>
<item name="windowMinWidthMinor">100%</item>

<item name="Android:windowBackground">@null</item>
<item name="Android:windowIsFloating">true</item>

<item name="Android:background">#ffffff</item>

背景は必須です。そうでないと、奇妙な繰り返しになりますが、これをダイアログの背景にしたい色に設定するだけです。サイズを正しく折り返すには、WindowBackgroundとWindowIsFloatingが必要です。

次のようにテーマをビルダーに追加します。

ビルダー=新しいAlertDialog.Builder(_context、R.style.DialogTheme);よろしくお願いします!

0
Elliptica