135 votes

Personnalisé toast dans android : un exemple simple

Je suis nouveau sur android programmation.Quelqu'un peut-il me donner un exemple simple montrant une coutume notification toast dans android?

226voto

Dipak Keshariya Points 10749

Utilisation ci-dessous le code de la coutume, des toasts, il peut être vous aider.

toast.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toast_layout_root"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp"
    android:background="#DAAA" >

    <ImageView android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_marginRight="10dp" />

    <TextView android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:textColor="#FFF" />

</LinearLayout>

MainActivity.java

LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.toast_layout,
                               (ViewGroup) findViewById(R.id.toast_layout_root));

ImageView image = (ImageView) layout.findViewById(R.id.image);
image.setImageResource(R.drawable.android);
TextView text = (TextView) layout.findViewById(R.id.text);
text.setText("Hello! This is a custom toast!");

Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();

Et découvrez ci-dessous des liens également pour coutume toast

Personnalisé Toast avec Horloge Analogique

22voto

ρяσѕρєя K Points 51253

ÉTAPE 1:

D'abord Créer une mise en page personnalisée pain grillé res/layout/custom_toast.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/custom_toast_layout_id"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FFF"
    android:orientation="horizontal"
    android:padding="5dp" >

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:textColor="#000" />

</LinearLayout>

ÉTAPE 2: Dans le code d'Activité de l'obtenir au-dessus de la vue personnalisée et attachez-la à Toast:

// get your custom_toast.xml ayout
        LayoutInflater inflater = getLayoutInflater();

        View layout = inflater.inflate(R.layout.custom_toast,
        (ViewGroup) findViewById(R.id.custom_toast_layout_id));

        // set a message
        TextView text = (TextView) layout.findViewById(R.id.text);
        text.setText("Button is clicked!");

        // Toast...
        Toast toast = new Toast(getApplicationContext());
        toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
        toast.setDuration(Toast.LENGTH_LONG);
        toast.setView(layout);
        toast.show();

Pour plus d'aider à voir comment nous Créer des Toasts dans Android:

http://developer.android.com/guide/topics/ui/notifiers/toasts.html

6voto

Deepthi Points 328

Son simple. Suffit de passer par l'android site du développeur. C'est le lien : Personnalisé ToastView.

5voto

Deepak Swami Points 2403

voir le lien Ici

vous trouverez votre solution

et essayer

Créer un Toast Vue

Si un simple message texte n'est pas assez, vous pouvez créer une mise en page personnalisée pour votre notification toast. Pour créer une mise en page personnalisée, définir une Vue de mise en page, au format XML ou dans le code de votre application, et de passer de la Vue de la racine de l'objet de la setView(point de Vue) de la méthode.

Par exemple, vous pouvez créer la mise en page pour le toast visible dans la capture d'écran à droite avec le code XML suivant (enregistré en tant que toast_layout.xml):

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/toast_layout_root"
          android:orientation="horizontal"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:padding="10dp"
          android:background="#DAAA"
          >
<ImageView android:id="@+id/image"
           android:layout_width="wrap_content"
           android:layout_height="fill_parent"
           android:layout_marginRight="10dp"
           />
<TextView android:id="@+id/text"
          android:layout_width="wrap_content"
          android:layout_height="fill_parent"
          android:textColor="#FFF"
          />
 </LinearLayout>

Notez que l'ID de la LinearLayout élément est "toast_layout". Vous devez utiliser cet IDENTIFIANT pour gonfler la mise en page du document XML, comme illustré ici:

 LayoutInflater inflater = getLayoutInflater();
 View layout = inflater.inflate(R.layout.toast_layout,
                           (ViewGroup) findViewById(R.id.toast_layout_root));

 ImageView image = (ImageView) layout.findViewById(R.id.image);
 image.setImageResource(R.drawable.android);
 TextView text = (TextView) layout.findViewById(R.id.text);
 text.setText("Hello! This is a custom toast!");

 Toast toast = new Toast(getApplicationContext());
 toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
 toast.setDuration(Toast.LENGTH_LONG);
 toast.setView(layout);
 toast.show();

Tout d'abord, récupérer le LayoutInflater avec getLayoutInflater() (ou getSystemService()), puis gonfler à la mise en page à partir de XML à l'aide de gonfler(int, ViewGroup). Le premier paramètre est la mise en page ID de ressource et la deuxième est la racine de la Vue. Vous pouvez utiliser ce gonflés de mise en page pour trouver plus d'Afficher des objets dans la mise en page, donc maintenant de saisir et de définir le contenu de l'ImageView et TextView éléments. Enfin, créez un nouveau Toast avec du pain grillé(Contexte) et de définir certaines propriétés du toast, tels que la gravité et de la durée. Appelez ensuite setView(la Vue) et la passer à l'gonflé de mise en page. Vous pouvez maintenant afficher le toast avec votre mise en page personnalisée en appelant show().

Remarque: Ne pas utiliser le constructeur public pour un Toast à moins que vous allez définir la mise en page avec setView(point de Vue). Si vous ne disposez pas d'une mise en page personnalisée pour l'utiliser, vous devez utiliser makeText(Contexte, int, int) pour créer le Toast.

2voto

ornay odder Points 95

Je pense que la plupart des customtoast xml-exemples à travers l'internet sont basés sur la même source. les docs android, ce qui est très désuet à mon avis. fill_parent ne doit pas être utilisé plus. Je préfère utiliser wrap_content en combinaison avec un xml.9.png. de cette façon, vous pouvez définir la taille minimum de toastbackground tout au long de la taille de la source.

Si plus complexes, des toasts sont nécessaires, le cadre ou relative de la mise en page doit être utilisé à la place de LL.

toast.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/points_layout"
    android:orientation="horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/background"
    android:layout_gravity="center"
    android:gravity="center" >

 <TextView
    android:id="@+id/points_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:gravity="center"
    android:layout_margin="15dp"
    android:text="@+string/points_text"
    android:textColor="@color/Green" />

</LinearLayout>

background.xml

<?xml version="1.0" encoding="utf-8"?>
<nine-patch
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:src="@drawable/background_96"
   android:dither="true"/>

background_96 est background_96.9.png.

ce n'est pas testé très bien, astuces apprécié :)

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