Frage

Ich möchte eine benutzerdefinierte Dialog machen. Weil ich nicht wie sein Stil zu tun, möchte ich ein abgerundetes Rechteck haben, anstatt scharfe Ecken. Ich weiß, wie es in AndroidManifest.xml, zum Beispiel nach Themen zu implementieren, die ich benutze:

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

Und 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>

Wie kann ich ein ähnliches Ergebnis implementieren, indem die Dialog oder AlertDialog erstreckt?

War es hilfreich?

Lösung

Im Konstruktor Ihrer Klasse, den Dialog Anruf super(context, R.style.CustomDialog); erweitert habe ich das schon oft getan, um benutzerdefinierte Dialoge mit bestimmten Themen zu erstellen.

Allerdings, wenn das Thema das einzige, was über den Dialog ist, dass Sie ändern möchten, können Sie versuchen, nur eine Instanz der Klasse Dialog instanziieren und es das Thema ID wie Dialog dialog = new Dialog(context, R.style.CustomDialog); geben

Ein Beispiel erstreckt 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);  
    }
}

Der Rest des Code, den Sie zu dieser Klasse hinzufügen werden wird ziemlich genau sein, wie das, was Sie in einer Aktivitätsklasse schreiben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top