3

背景が半透明のカスタム ダイアログを作成しようとしています。次のコードを使用して、なんとか動作させることができました。

getWindow().setBackgroundDrawableResource(R.color.bg_tran);

ここで、bg_tran == #A0000000 です。ただし、これをいくつかの異なるカスタムダイアログクラスに使用するため、XML で使用したいと考えています。android:background だけを使用しても機能しません。テーマを @android:style/Theme.Translucent に設定することもできませんでした。

属性 android:windowBackground の使用について話している記事をいくつか見つけました。ただし、android:windowBackground 属性は存在しません。つまり、日食はオートコンプリートのオプションとして表示されません。スタイル シートと実際の layout.xml を確認しました。私は 2.2 用にコンパイルしているので、問題があると考え、ビルド ターゲットを 4.0.3 に変更しました。修正なし。とにかく明示的に使用しようとしましたが、うまくいきません。Android Dev Web サイトを検索しましたが、この属性について説明しているページさえ見つかりません。ついでに時々言及することを除けば、何もありません。また、setBackgroundDrawableResource を調べても、同等の XML 属性タグが何であるかはわかりません。私は信じられないほど混乱しています。私は何が欠けていますか?

上記で学習したスタック オーバーフローの参照:
透明なダイアログ テーマ
Android Dialog Transparent
カスタム ダイアログを透明にする方法

更新:
明確でない場合は、はい、テーマ内でこれを設定しようとしました。動作しません。これが私の定義したテーマです:

<style name="my_dialog_theme" parent="@android:style/Theme.Dialog">
    <item name="android:windowBackground">@color/bg_tran</item>
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_width">wrap_content</item>
</style>
4

2 に答える 2

3

ダイアログのカスタムテーマを定義する必要があります。

<style name="Theme.CustomDialog" parent="android:Theme.Dialog">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    ...
    ...
</style>

アップデート:

Dialogクラスを拡張することで、ダイアログで必要なことを実現できます。この派生クラスで描画可能なウィンドウの背景を設定します。

public class CustomDialog extends Dialog 
{
    public CustomDialog (final Context context)
    {
        super(context);

        // This is the layout XML file that describes your Dialog layout
        this.setContentView(R.layout.myDialogLayout);  
        getWindow().setBackgroundDrawableResource(R.color.bg_tran);
    }
}
于 2012-05-07T15:47:05.293 に答える
0

私は同じ問題を経験しました。android:windowBackground 属性が表示されないだけです。完全な属性を入力して自分で修正し、プロジェクトをビルドする必要があります。出来上がり、エラーなしでコンパイルされ、完全に機能します。

于 2014-10-14T10:14:29.327 に答える