408 votes

Comment créer une boîte de dialogue personnalisée dans android ?

Je voudrais créer une boîte de dialogue personnalisée comme ci-dessous

enter image description here

J'ai essayé les choses suivantes.

  1. J'ai créé une sous-classe de AlertDialog.Constructeur et personnalisé le Titre et le Contenu Personnalisé de la Vue et utilisée, mais le résultat n'était pas comme prévu.

  2. Une autre tentative a été à la sous-classe DialogFragment et personnaliser la boîte de dialogue à l'intérieur de onCreateDialog que mais le résultat n'était pas comme prévu.

  3. Ensuite, j'ai essayé en utilisant un simple Dialogue de classe. Le résultat n'était pas comme prévu.

Dans les trois cas, le problème est quand je donne sur le titre de la vue de la taille de la boîte de dialogue n'est pas comme prévu et quand j'utilise le Titre afficher le résultat est qu'il existe une épaisseur de bordure autour de l'affichage du contenu (qui ressemble vraiment mauvais). Maintenant, j'ai deux questions dans mon esprit...

  1. Comment puis-je y parvenir? Comme je l'ai déjà essayé beaucoup de choses, une réponse directe sera plus apprécié.

  2. Quelle est la meilleure façon de montrer une erreur ou d'alerte dans la boîte de dialogue d'une application android?

MODIFIER Développeur Android Documentation recommande que nous devrions utiliser DialogFragments ou des boîtes de dialogue pour montrer d'Erreur / Messages d'Alerte à l'utilisateur. Cependant, à un moment ils disent ...

Tip: If you want a custom dialog, you can instead display an Activity as a dialog instead of using the Dialog APIs. Simply create an activity and set its theme to Theme.Holo.Dialog in the <activity> manifest element.

Quelle est la signification de cela? N'est-il pas trop d'utiliser une Activité juste pour montrer un message d'erreur???

648voto

chintan khetiya Points 5941

Ici, j'ai créer des boîtes de Dialogue simple.

comme : enter image description here

custom_dialog.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="80dp"
    android:background="#3E80B4"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/txt_dia"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_margin="10dp"
        android:text="Do you realy want to exit ?"
        android:textColor="@android:color/white"
        android:textSize="15dp"
        android:textStyle="bold" >
    </TextView>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:background="#3E80B4"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btn_yes"
            android:layout_width="100dp"
            android:layout_height="30dp"
            android:background="@android:color/white"
            android:clickable="true"
            android:text="Yes"
            android:textColor="#5DBCD2"
            android:textStyle="bold" />

        <Button
            android:id="@+id/btn_no"
            android:layout_width="100dp"
            android:layout_height="30dp"
            android:layout_marginLeft="5dp"
            android:background="@android:color/white"
            android:clickable="true"
            android:text="No"
            android:textColor="#5DBCD2"
            android:textStyle="bold" />
    </LinearLayout>

</LinearLayout>

Vous avez d' extends Dialog et implements OnClickListener

public class CustomDialogClass extends Dialog implements
    android.view.View.OnClickListener {

  public Activity c;
  public Dialog d;
  public Button yes, no;

  public CustomDialogClass(Activity a) {
    super(a);
    // TODO Auto-generated constructor stub
    this.c = a;
  }

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.custom_dialog);
    yes = (Button) findViewById(R.id.btn_yes);
    no = (Button) findViewById(R.id.btn_no);
    yes.setOnClickListener(this);
    no.setOnClickListener(this);

  }

  @Override
  public void onClick(View v) {
    switch (v.getId()) {
    case R.id.btn_yes:
      c.finish();
      break;
    case R.id.btn_no:
      dismiss();
      break;
    default:
      break;
    }
    dismiss();
  }
}

Comment Appeler la boîte de Dialogue ?

R.id.TXT_Exit:
CustomDialogClass cdd=new CustomDialogClass(Values.this);
cdd.show();  

Les mises à jour

Après beaucoup de temps, un de mes ami m'a demandé de faire des courbes en forme de dialogue avec un fond transparent. Donc, Ici, j'ai la mettre en œuvre.

enter image description here

Pour Faire la forme incurvée vous avez besoin pour créer des curve_shap.XML comme ci-dessous,

<shape xmlns:android="http://schemas.android.com/apk/res/android" >

    <solid android:color="#000000" />

    <stroke
        android:width="2dp"
        android:color="#ffffff" />

    <corners
        android:bottomLeftRadius="20dp"
        android:bottomRightRadius="20dp"
        android:topLeftRadius="20dp"
        android:topRightRadius="20dp" />

</shape>

Maintenant, ajoutez cette curve_shap.XML à votre affichage principal de la Mise en page. Dans mon cas, j'ai utiliser LinearLayout

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="80dp"
        android:background="@drawable/curve_shap"
        android:orientation="vertical" >
...
</LinearLayout>

Comment appeler cela ?

CustomDialogClass cdd = new CustomDialogClass(MainActivity.this);
cdd.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
cdd.show();

J'espère que son travail pour vous.

115voto

Swapnil Points 564

Un autre moyen facile de le faire.

étape 1) créer une disposition justificative appropriée de

paragraphe 2), utilisez que le code suivant là où vous le désirez.

39voto

Vineet Shukla Points 12926

Ajouter le sous thème en``

Utiliser ce thème dans votre `` méthode comme suit :

Définissez votre type de dialogue, y compris la barre de titre dans le fichier xml, ce fichier xml comme suit :

6voto

Omarj Points 1357

Il y a plusieurs façons de le faire :

documentation du développeur Android

projet simple

1voto

jigar Points 452

Peut-être que ce tutoriel va vous aider. Passez en revue il ami démo Android boîte de dialogue personnalisée

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X