9

Androidアプリケーションでカスタムダイアログを表示する必要があります。標準AlertDialog設計は受け入れられません。Androidドキュメントによると:

ヒント:カスタムダイアログが必要な場合は、Dialog APIを使用する代わりに、アクティビティをダイアログとして表示できます。アクティビティを作成し、マニフェスト要素でそのテーマをTheme.Holo.Dialogに設定するだけです。

それでおしまい。アクティビティが全画面ではなくダイアログウィンドウに表示されるようになりました。

有望に聞こえた。やりましたが、透明感が出ません!背景は常に灰色です:

ここに画像の説明を入力してください

マニフェストの説明は次のとおりです。

<activity
    android:name=".MyDialogActivity"
    android:screenOrientation="portrait"
    android:theme="@android:style/Theme.Holo.Dialog.NoActionBar" >
</activity>

これが私の活動のルーツです:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:background="#00000000"
    android:layout_width="400dp"
    android:layout_height="wrap_content" >

    // Content ... //

</RelativeLayout>

私も試してみandroid:background="@null"ました-効果は同じでした。私が使用する場合android:background="#ff0000"、それは赤です(そうあるべきです)。しかし、どうすればそれを透明にすることができますか?

アップデート

私は

<style name="MyThemeDialogCustom" parent="android:Theme.Holo.Dialog.NoActionBar" >
    <item name="android:windowBackground">@color/transparent</item>
    <item name="android:colorBackgroundCacheHint">@null</item>
</style>
4

5 に答える 5

8

このようなテーマを作る

<style name="ThemeDialogCustom">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
<item name="android:windowBackground">@color/transparent</item>
<item name="android:colorBackgroundCacheHint">@null</item>
</style>
于 2012-12-02T12:55:36.467 に答える
6

試す...

このように灰色の背景を避けることができます。ここでは、透明な背景を取得しました。

    ........
    Dialog dialog = new Dialog(MainActivity.this);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    Window window = dialog.getWindow();
    window.setBackgroundDrawableResource(android.R.color.transparent);
    dialog.setContentView(R.layout.popup_layout);
    Button dialogBtn= (Button) dialog.findViewById(R.id.btn);

    dialogBtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            //task
        }
    });
    dialog.show();
    .......
于 2014-09-17T14:48:42.297 に答える
2
dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
于 2014-12-10T11:20:13.903 に答える
0

私はこれをスタイルとして使用しました:

<style name="DialogTransparent" parent="Theme.AppCompat.Dialog">
    <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:background">@android:color/transparent</item>
</style>
<!-- <item name="android:backgroundDimEnabled">false</item> -->

背景透過もあり、brackgroundDimEnabled パラメーターを false に設定すると、背中のダイアログで表示される灰色の背景が表示されなくなります。

于 2019-09-29T06:37:19.820 に答える