20

カスタムしたいDialog。私はそのスタイルが気に入らないので、尖った角ではなく丸みを帯びた長方形にしたいと考えています。でテーマごとに実装する方法を知っていますAndroidManifest.xml。たとえば、次を使用します。

android:theme="@style/Theme.CustomDialog"

そしてTheme.CustomDialog.xml

<style name="Theme.CustomDialog" parent="android:style/Theme.Dialog">
        <item name="android:windowBackground">@drawable/filled_box</item>
        <item name="android:windowNoTitle">true</item>

filled_box.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#ffffffff"/>
    <stroke android:width="3dp" color="#ffff8080"/>
    <corners android:radius="30dp" />
    <padding android:left="10dp" android:top="10dp"
        android:right="10dp" android:bottom="10dp" />
</shape>

orを拡張して同様の結果を実装するにはどうすればよいですDialogAlertDialog?

4

1 に答える 1

47

Dialog 呼び出しを拡張するクラスのコンストラクターで、super(context, R.style.CustomDialog); 特定のテーマを持つカスタム ダイアログを作成するためにこれを何度も行いました。

ただし、変更したいダイアログのテーマが唯一のものである場合は、Dialog クラスのインスタンスをインスタンス化して、次のようにテーマ ID を渡すことができます。Dialog dialog = new Dialog(context, R.style.CustomDialog);

ダイアログを拡張する例:

public class MyDialog extends Dialog
{
    public MyDialog(final Context context)
    {
        // Set your theme here
        super(context, R.style.MyDialogTheme);

        // This is the layout XML file that describes your Dialog layout
        this.setContentView(R.layout.myDialogLayout);  
    }
}

このクラスに追加する残りのコードは、Activity クラスで作成するものとほとんど同じです。

于 2009-12-29T16:30:48.337 に答える