Anpassen der Dialog durch Ausdehnen Dialog oder Alertdialog
-
21-09-2019 - |
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?
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.