2011-12-31 15 views
5

Ho una notifica personalizzata per il brindisi che ha un'immagine e un testo. Il brindisi personalizzato funziona bene, tuttavia, mi chiedo come faccio a rendere il mio toast personalizzato ereditato dall'aspetto predefinito dei toast. Voglio che assomigli a quello predefinito con i bei angoli e bordi arrotondati.Android: Notifica personalizzata Toast Eredita Default Toast

Questo è il mio brindisi personalizzato.

<?xml version="1.0" encoding="utf-8"?> 
<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/chatIcon" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginRight="10dp" 
     android:src="@drawable/ic_chat"/> 
    <TextView android:id="@+id/text" 
     android:text="@string/unread_message_toast" 
       android:layout_width="wrap_content" 
       android:layout_height="fill_parent" 
       android:textColor="#FFF" 
       /> 
</LinearLayout> 

risposta

6

Io uso questo in una delle mie applicazioni. Cambia alcune cose e dovrebbe funzionare anche per te.

Toast ImageToast = new Toast(getBaseContext()); 
       LinearLayout toastLayout = new LinearLayout(
         getBaseContext()); 
       toastLayout.setOrientation(LinearLayout.HORIZONTAL); 
       ImageView image = new ImageView(getBaseContext()); 
       image.setImageResource(R.drawable.easter_egg); 
       toastLayout.addView(image); 
       ImageToast.setView(toastLayout); 
       ImageToast.setDuration(Toast.LENGTH_SHORT); 
       ImageToast.show(); 
+0

che è grande! Molto flessibile Questo può essere riutilizzato senza dover aggiungere gli XML di layout e gli ID degli elementi di gestione. In precedenza ho utilizzato il metodo inflator, non così facile da riutilizzare. +1 – iozee

+1

Sembra non funzionare più. Genera un'eccezione: java.lang.RuntimeException: questo Toast non è stato creato con Toast.makeText() – Silmarilos

0

Prova questa

<style name="Themename" parent="android:Theme.dialog"> 

da developer.android.com/guide/topics/ui/themes.html

0

Provare sotto il codice.

Gonfiare la vista dal layout XML e denominarla come inflated_xml_view.

Toast toastView = new Toast(this); 
    toastView.setView(inflated_xml_view); 
    toastView.setDuration(Toast.LENGTH_LONG); 
    toastView.setGravity(Gravity.CENTER, 0,0); 
    toastView.show(); 
+0

Grazie per la risposta, mi dispiace non averti indietro con te. Ci proverò stasera e assegnerò un vincitore. – EpicOfChaos

1

Per ottenere lo sfondo predefinito con i bei angoli arrotondati (su lecca-lecca) utilizzare:

android:background="@android:drawable/toast_frame" 

o

android:background="?android:attr/toastFrameBackground" 

Darà background Toast a seconda della versione di Android , se vuoi l'ultimo suggerisco di cercare il file toast_frame.9.png in ..sdk \ piattaforme \ android- [in ritardo Versione st] \ Dati \ res \ drawable- [densità]

Testo Stile:

android:textAppearance="@android:style/TextAppearance.Toast" 
    android:textColor="@android:color/bright_foreground_dark" 
    android:shadowColor="#BB000000" 
    android:shadowRadius="2.75" 

Fonte: https://github.com/android/platform_frameworks_base/blob/master/core/res/res/layout/transient_notification.xml