Question

Je veux faire un Dialog personnalisé. Parce que je n'aime pas son style, je veux avoir un rectangle arrondi plutôt que des angles vifs. Je sais comment le mettre en œuvre par thème AndroidManifest.xml, par exemple, je l'utilise:

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

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

Comment puis-je mettre en œuvre un résultat similaire en prolongeant la Dialog ou AlertDialog?

Était-ce utile?

La solution

Dans le constructeur de votre classe qui étend appel Dialog super(context, R.style.CustomDialog); je l'ai fait à plusieurs reprises pour créer des dialogues personnalisés avec des thèmes spécifiques.

Toutefois, si le thème est la seule chose au sujet de la boîte de dialogue que vous voulez changer, vous pouvez essayer juste une instanciation instance de la classe de dialogue et passez l'ID du thème comme Dialog dialog = new Dialog(context, R.style.CustomDialog);

Un exemple d'extension de dialogue:

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);  
    }
}

Le reste du code que vous ajouterez à cette classe va être à peu près exactement comme ce que vous écrivez dans une classe d'activité.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top