2013-07-23 1 views
6

Я хочу настроить мой тост, не создавая собственный макет, изменяя по умолчанию Toast. Я хочу красный цвет для фона тоста и белый цвет для текста тостов, и я хочу сделать мой тост более крупным, чем тост по умолчанию. когда я запускаю свое приложение, ничего не меняется от моего тоста, он по-прежнему отображается в тостах по умолчанию.Как настроить фон, цвет фона и цвет текста для Toast in android

Это, как я настроить мой тост:

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

Для меня «еще» случай показывает красный тост с белым текстом с нанесенными прокладками. – sandrstar

ответ

9

У вас может быть пользовательское представление, надувающее пользовательское представление и использование toast.setView(layout).

Пример:

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

И ваш 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> 

Подробнее @

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

Ран ваш, если и еще часть кода (отдельно) он показывает тост с красным фоном и белым цветом текста. Я не вижу никаких проблем. Но если вам нужно настроить, вы можете использовать пользовательский макет и раздуть макет и настроить представление на тост.

Edit:

Ваш TextView

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

инициализируется в если часть и еще часть TextView не инициализирован.

Инициализировать текстовое представление вне кода if и else.

Проверить эту библиотеку под названием гренок, которые вы можете найти полезный

https://github.com/keyboardsurfer/Crouton

+0

Я хочу настроить мой тост, не создавая собственный макет, изменяя по умолчанию Toast. могу я? –

+1

@AoyamaNanami вы можете проверить сообщение выше. также ваш код отлично работает, я вижу тост с красным фоном и белым текстом. ТАК, какая именно проблема. Я не могу воспроизвести вашу проблему. Я запустил код, скопировав его. он отлично работает. Использование настраиваемого макета даст вам больше возможностей настройки. – Raghunandan

+0

это работает .. спасибо :) –

2

Toast имеет метод setView().

Вы можете настроить Toast для отображения любого вида.

Я бы сказал, вместо того чтобы пытаться отредактировать представление внутри Тоста, вы просто создаете представление и вставляете его в себя.

+0

Можете ли вы рассказать, как можно настроить его? –

0

У меня есть очень простой и легкий код настроить Тост соответственно, вы можете изменить фон тост и цвета текста также.

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