Очень простой подход к созданию более длинного сообщения заключается в следующем:
private Toast myToast;
public MyView(Context context) {
myToast = Toast.makeText(getContext(), "", Toast.LENGTH_LONG);
}
private Runnable extendStatusMessageLengthRunnable = new Runnable() {
@Override
public void run() {
//Show the toast for another interval.
myToast.show();
}
};
public void displayMyToast(final String statusMessage, boolean extraLongDuration) {
removeCallbacks(extendStatusMessageLengthRunnable);
myToast.setText(statusMessage);
myToast.show();
if(extraLongDuration) {
postDelayed(extendStatusMessageLengthRunnable, 3000L);
}
}
Обратите внимание, что в приведенном выше примере исключена опция LENGTH_SHORT, чтобы сделать пример простым.
Как правило, вы не хотите использовать сообщение Toast для отображения сообщений в течение очень длинных интервалов, так как это не является целью класса Toast. Но бывают случаи, когда количество текста, которое вам нужно отобразить, может занять у пользователя больше 3,5 секунд для чтения, и в этом случае небольшое увеличение времени (например, до 6,5 секунд, как показано выше) может, IMO, быть полезным и в соответствии с предполагаемым использованием.