Comment ajouter une icône devant chaque élément dans la boîte de dialogue d'alerte?
Je suis en utilisant un AlertDialog (voir le code ci-dessous) et je voudrais mettre une image avant chaque texte.
Par exemple, l'icône e-mail le message "e-Mail", Facebook icône de texte "Facebook", etc.
En utilisant le code suivant, comment ajouter une icône devant chaque valeur de texte?
final CharSequence[] items = { "Email", "Facebook", "Twitter", "LinkedIn" };
AlertDialog.Builder builder = new AlertDialog.Builder(More.this);
builder.setTitle("Share Appliction");
builder.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int item) {
if (item == 0) {
} else if (item == 1) {
} else if (item == 2) {
} else if(item == 3) {
}
}
});
AlertDialog alert = builder.create();
alert.show();
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin personnalisé
ListAdapter
pour ajouter votre image. Une façon est de la sous-classe leArrayAdapter
(utilisé par défaut par leAlertDialog
). Voici un exemple:Ici est la classe de l'Élément
android.R.layout.select_dialog_item
utilisationtypedArray.getResourceId(R.styleable.AlertDialog_listItemLayout, 0)
. Le tableau typé est définie ainsi:TypedArray typedArray = context.obtainStyledAttributes(null, R.styleable.AlertDialog, R.attr.alertDialogStyle, 0);
. Je l'ai pris directement à partir de la bibliothèque de prise en charge code de la boîte de dialogue d'alerte listview.getResourceId
comme la façon dont @Nedko a montré ci-dessus, il ne s'est toujours pas rendu des éléments comme la façon dont il semble lors de l'utilisation desetItems()
. L'élément de remplissage à gauche semble être plus petits et rend les éléments de décalage avec le titre. Une idée de comment résoudre ce problème?Faire quelque chose comme ceci:
Totale idée est de créer la mise en page/viewgroup et d'ajouter l'icône+texte+ce que vous voulez dans viewgroup
À l'échelle des images:
J'aime Tom Esterez's solution mais vous recommandons d'utiliser la fonction relative au lieu de RTL soutien.
Donc l'utiliser:
au lieu de cela: