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>

如何通过扩展Dialogor来实现类似的结果AlertDialog

4

1 回答 1

47

在扩展 Dialog 调用的类的构造函数中,super(context, R.style.CustomDialog); 我已经多次这样做以创建具有特定主题的自定义对话框。

但是,如果主题是您想要更改的关于 Dialog 的唯一内容,您可以尝试仅实例化 Dialog 类的实例并将主题 ID 传递给它Dialog dialog = new Dialog(context, R.style.CustomDialog);

扩展Dialog的一个例子:

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 回答