Настройка диалогового окна путем расширения Диалогового окна или AlertDialog

Я хочу сделать пользовательское 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>

Как я могу реализовать подобный результат путем расширения Dialog или AlertDialog?

19
задан pengwang 10 August 2012 в 08:18
поделиться

1 ответ

В конструкторе Вашего класса, который расширяет Dialog call 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 Class.

44
ответ дан 30 November 2019 в 03:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: