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?

È stato utile?

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à.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top