dialogo Personalizzazione estendendo Dialog o AlertDialog
-
21-09-2019 - |
Domanda
Voglio fare un Dialog
personalizzato. Perché non mi piace il suo stile, voglio avere rettangolo arrotondato piuttosto che spigoli vivi. Io so come implementarlo per tema in AndroidManifest.xml
, per esempio, io uso:
android:theme="@style/Theme.CustomDialog"
E 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>
Come posso implementare un risultato simile estendendo il Dialog
o AlertDialog
?
Soluzione
Nel costruttore della classe che si estende Dialog super(context, R.style.CustomDialog);
chiamata che ho fatto questo molte volte per creare finestre di dialogo personalizzate con temi specifici.
Tuttavia, se il tema è l'unica cosa sulla finestra che si desidera modificare, si potrebbe provare solo istanziare un'istanza della classe Dialog e passarlo l'ID tema come Dialog dialog = new Dialog(context, R.style.CustomDialog);
Un esempio di dialogo che si estende:
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);
}
}
Il resto del codice si aggiungerà a questa classe sta per essere più o meno esattamente come quello che si può scrivere in una classe di attività.