首页 > 试题广场 >

使用Toast提示时,关于提示时长,下面说法正确的是( ).

[单选题]
使用Toast提示时,关于提示时长,下面说法正确的是( ).
  • 显示时长默认只有2种设置
  • 可以自定义显示时长
  • 传入30时,提示会显示30秒钟
  • 当自定义显示时长时,比如传入30,程序会抛出异常
A.显示时长只有2种设置
Toast.makeText(this, str, Toast.LENGTH_LONG).show();
toast只能设置为 2s和3.5s ,其它的值都无效,API的文档虽然写的第三个参数是时间,但是Framework里作了重定义,限定了 2s和3.5s 这两个值 ,对应 Toast.LENGTH_SHORT和Toast.LENGTH_LONG,实现方式在NotificationManagerService.java的scheduleTimeoutLocked()这个函数里。

Toast的默认显示时间有两个,分别为Toast.LENGTH_SHORT和Toast.LENGTH_LONG

编辑于 2015-02-12 15:31:40 回复(0)
在Android源码中的NotificationManagerService.java这个类中定义了两个静态变量,分别对应Toast.LENGTH_LONG(3.5秒)和Toast.LENGTH_SHORT(2秒)的值

Toast..makeText(Context context,CharSequence text, int duration).show() 中的duration只能设这两个值,其他值是没有用处的。

在NotificationManagerService.java的scheduleTimeoutLocked()
private void scheduleTimeoutLocked(ToastRecord r) {
        mHandler.removeCallbacksAndMessages(r);
        Message m = Message.obtain(mHandler, MESSAGE_TIMEOUT, r);
        long delay = r.duration == Toast.LENGTH_LONG ? LONG_DELAY : SHORT_DELAY;
        mHandler.sendMessageDelayed(m, delay);
 }
static final int LONG_DELAY = 3500; // 3.5 seconds
static final int SHORT_DELAY = 2000; // 2 seconds
Toast.LENGTH_LONG=1;

帮助大家接触疑惑。。。。。

发表于 2015-10-12 18:18:43 回复(0)
A   Toast只能使用short(大概2秒)和long(大概3.5秒)两种时长,传进去自定义数字并不会报错,只是实际不起作用,想要更丰富的提示推荐用Dialog
发表于 2015-04-09 15:54:13 回复(1)
这个是关于空接口的使用.
https://github.com/android-cn/interview-questions/issues/6
发表于 2015-03-11 17:50:18 回复(1)
android.widget.Toast在线文档: https://developer.android.com/reference/kotlin/android/widget/Toast?hl=en#LENGTH_LONG%3Akotlin.Int
发表于 2019-02-28 17:17:56 回复(0)
在新的api里,如果设置其它时长的话,应该是会提示错误的,因为它已经加上了注解,你必需只能传入Toast.LENGTH_SHORT和Toast.LENGTH_LONG这两个值才行。
发表于 2017-08-30 10:47:59 回复(0)
Android中使用Toast提示时, 显示时长默认只有2种设置
Toast.makeText(this, str, Toast.LENGTH_LONG).show();
toast只能设置为 2s和3.5s ,其它的值都无效,API的文档虽然写的第三个参数是时间,但是Framework里作了重定义,限定了 2s和3.5s 这两个值 ,对应 Toast.LENGTH_SHORT和Toast.LENGTH_LONG,实现方式在NotificationManagerService.java的scheduleTimeoutLocked()这个函数里。

Toast的默认显示时间有两个,分别为Toast.LENGTH_SHORT和Toast.LENGTH_LONG
发表于 2016-11-27 11:13:38 回复(0)
toast只能设置为 2s和3.5s ,其它的值都无效,API的文档虽然写的第三个参数是时间,但是Framework里作了重定义,限定了 2s和3.5s 这两个值 ,对应 Toast.LENGTH_SHORT和Toast.LENGTH_LONG,实现方式在NotificationManagerService.java的scheduleTimeoutLocked()这个函数里。
发表于 2016-11-08 22:23:28 回复(0)
问得有问题吧,绝对可以实现自定义时长……不过a好像也对。
发表于 2016-09-26 00:42:49 回复(0)
数值传递只能设置2和3.5也就是SHORT和LONG
发表于 2016-03-06 10:19:41 回复(0)
绝对是B,传入数字单位是毫秒
发表于 2016-03-01 11:17:25 回复(0)
自己不断设置show(),然后在相应的时间后cancel();
发表于 2015-11-22 18:14:44 回复(0)
虽然参数上是 int 但自定义的值是没有效果的
发表于 2015-09-17 11:54:05 回复(0)
答案错了吧,百度Google一下就知道了,有很多自定义时长的demo
发表于 2015-09-03 15:41:29 回复(0)
2S   3.5s
发表于 2015-08-07 16:46:15 回复(0)
默认当然两个,当然可以自己实现一些方法来实现自定义延时。
发表于 2015-07-30 09:14:52 回复(0)
A。默认只有LENGTH_SHORT和LENGTH_LONG。
发表于 2015-07-25 16:37:31 回复(0)
为什么写入自定义时间,会无效呢?
发表于 2015-07-13 14:04:59 回复(0)
我记得可以自定义时长啊?无效?
发表于 2015-07-03 06:06:49 回复(0)
显示时长可以自定义任何时间的,试一下就知道了,leng和short只是两种方式而已
发表于 2015-06-28 21:58:51 回复(1)