2013-07-23 11 views
6

Chcę dostosować mój toast bez tworzenia niestandardowego układu przez modyfikowanie domyślnej tosty. Chcę koloru czerwonego dla tła tostowego i koloru białego dla koloru tekstu tostów i chcę, aby moje tostowe tło było większe niż toast. kiedy uruchamiam moją aplikację, nic nie zmienia się z tostów, wciąż wyświetla się toast domyślnie.Jak dostosować tło, kolor tła i kolor tekstu dla Toast w Androidzie

ten sposób mogę dostosować mój tost:

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

Dla mnie przypadek "else" pokazuje czerwone tosty z białym tekstem z zastosowanymi paddings. – sandrstar

Odpowiedz

9

Możesz mieć niestandardowy widok nadmuchać niestandardowy widok i użyć toast.setView(layout).

Przykład:

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(); 

A twój 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> 

Więcej info @

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

wyświetlały wtedy i jeszcze część kodu (oddzielnie) pokazuje tosty z czerwonym tłem i białym kolorem tekstu. Nie widzę żadnego problemu. Ale jeśli chcesz dostosować, możesz użyć niestandardowego układu i nadmuchać układ i ustawić widok na toast.

Edit:

Twój TextView

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

jest inicjowany w razie część w innym część TextView nie jest inicjowany.

Inicjalizuj widok tekstowy na zewnątrz, jeśli i jeszcze kod.

Sprawdź to biblioteka nazywa Crouton który może się okazać przydatny

https://github.com/keyboardsurfer/Crouton

+0

Chcę dostosować toast bez tworzenia niestandardowego układu przez modyfikowanie domyślnej tosty. czy mogę? –

+1

@AoyamaNanami możesz sprawdzić wpis powyżej. również twój kod działa dobrze widzę tosty z czerwonym tłem i białym tekstem. WIĘC co to jest dokładny problem. nie mogę odtworzyć twojego problemu. Uruchomiłem twój kod przez skopiowanie tego samego. to działa dobrze. Użyj niestandardowego układu, aby uzyskać więcej opcji dostosowywania. – Raghunandan

+0

działa .. dziękuję :) –

2

Toast ma metodę setView().

Możesz dostosować toast, aby pokazać dowolny widok.

Powiedziałbym, że zamiast próbować edytować widok wewnątrz Toast, wystarczy utworzyć widok i umieścić go w sobie.

+0

czy możesz powiedzieć, w jaki sposób można to spersonalizować? –

0

Mam bardzo prosty i łatwy kod dostosować Toast odpowiednio, można zmienić tło tosty i kolor tekstu również.

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();