2013-07-23 14 views
6

Desidero personalizzare il mio toast senza creare un layout personalizzato modificando il Toast predefinito. Voglio il colore rosso per lo sfondo del toast e il colore bianco per il colore del testo del toast e voglio rendere lo sfondo del mio toast più grande di quello predefinito. quando eseguo la mia applicazione, non c'è nulla di diverso dal mio toast, viene comunque visualizzato nel toast predefinito.Come personalizzare sfondo, colore di sfondo e colore del testo per Toast in Android

Questo è il modo in personalizzo il mio pane tostato:

if (seriesSelection == null) { 
    Toast toast = Toast.makeText(getApplicationContext(), "tidak ada chart yang dipilih", Toast.LENGTH_SHORT); 
    toast.setGravity(Gravity.CENTER, 50, 50); 
    toast.getView().setPadding(10, 10, 10, 10); 
    toast.getView().setBackgroundColor(Color.RED); 
    TextView text = (TextView) toast.getView().findViewById(android.R.id.message); 
    text.setTextColor(Color.WHITE); 
    text.setTextSize(14); 
} else { 
    Toast toast= Toast.makeText(
      getApplicationContext(), 
      "Nilai " + listData.get(seriesSelection.getPointIndex()).getInuNilai()+ 
      " tanggal " + listData.get(seriesSelection.getPointIndex()).getTanggal(), 
      Toast.LENGTH_SHORT); 
    toast.setGravity(Gravity.CENTER, 50, 50); 
    toast.getView().setPadding(10, 10, 10, 10); 
    toast.getView().setBackgroundColor(Color.RED); 
    text.setTextColor(Color.WHITE); 
    text.setTextSize(14); 
    toast.show(); 
} 
+0

Per me, il caso 'else' mostra un brindisi rosso con testo bianco con paddings applicati. – sandrstar

risposta

9

È possibile impostare una vista personalizzata per gonfiare una vista personalizzata e utilizzare toast.setView(layout).

Esempio:

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

TextView text = (TextView) layout.findViewById(R.id.text); 
text.setText("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(); 

E il tuo 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="8dp" 
       android:background="#DAAA" 
       > 
    <ImageView android:src="@drawable/droid" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="8dp" 
       /> 
    <TextView android:id="@+id/text" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textColor="#FFF" 
       /> 
</LinearLayout> 

Maggiori info @

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

Ran tua se e parte il resto del codice (a parte) si vede brindisi con sfondo rosso e colore del testo bianco. Non vedo alcun problema Ma se è necessario personalizzare è possibile utilizzare un layout personalizzato e gonfiare il layout e impostare la vista per il brindisi.

Edit:

tuo TextView

TextView text = (TextView) toast.getView().findViewById(android.R.id.message); 

viene inizializzata nella parte, se e in altra parte TextView non è inizializzata.

Inizializza vista testo all'esterno se e altro codice.

Scegli questa libreria chiamata crostino che si potrebbe trovare utile

https://github.com/keyboardsurfer/Crouton

+0

Desidero personalizzare il mio toast senza creare un layout personalizzato modificando il Toast predefinito. posso? –

+1

@AoyamaNanami puoi controllare il post qui sopra. anche il tuo codice funziona bene posso vedere il brindisi con sfondo rosso e testo bianco. Quindi qual è il problema esatto. non riesco a riprodurre il tuo problema Ho eseguito il tuo codice copiando incollando lo stesso. funziona bene Usa layout personalizzato ti darà più opzioni di personalizzazione. – Raghunandan

+0

funziona .. grazie :) –

2

Toast è un metodo setView().

È possibile personalizzare un toast per mostrare qualsiasi vista.

Direi invece di provare a modificare la vista all'interno del Toast, basta creare una vista e inserirla in se stessi.

+0

puoi dire come la personalizzi? –

0

Ho codice molto semplice e facile per personalizzare un brindisi di conseguenza, è possibile cambiare lo sfondo di pane tostato e il testo di colore anche.

Toast toast = Toast.makeText(MainActivity.this, "Added successfully", Toast.LENGTH_LONG); 
    View view1 = toast.getView(); 
    toast.getView().setPadding(20, 20, 20, 20); 
    view1.setBackgroundResource(R.color.GREEN); 
    view1.setTextColor(Color.RED); 
    toast.show();