【问题标题】:Set Toast Appear Length设置 Toast 出现长度
【发布时间】:2011-04-16 01:28:05
【问题描述】:

无论如何,我可以告诉 Toast 通知仅在指定的时间内显示。通常比普通的 toast 消息短。

【问题讨论】:

标签: android time toast


【解决方案1】:

我通过在比标准 toast 持续时间短的一定延迟后调用 toast.cancel() 找到了解决方案。

        final Toast toast = Toast.makeText(ctx, "This message will disappear in 1 second", Toast.LENGTH_SHORT);
        toast.show();

        Handler handler = new Handler();
            handler.postDelayed(new Runnable() {
               @Override
               public void run() {
                   toast.cancel(); 
               }
        }, 1000);

【讨论】:

  • 当我将值更改为 100 而不是 1000 时,它第二次无法正常工作,因为我需要它在很短的时间内显示 toast...
  • @Aniket,可能太快了你看不到?
【解决方案2】:

没有。

你可以这样做:

Toast a = Toast.makeText(this, "a", Toast.LENGTH_LONG);
a.setDuration(300);

但它不会显示自己。

持续时间应为LENGTH_SHORTLENGTH_LONG

【讨论】:

    【解决方案3】:

    试试这个

    final Toast toast = Toast.makeText(getBaseContext(), "YOUR MESSAGE",Toast.LENGTH_SHORT);
                toast.show();
                new CountDownTimer(10000, 1000)
                {
                    public void onTick(long millisUntilFinished) {toast.show();}
                    public void onFinish() {toast.cancel();}
                }.start();
    

    希望对您有所帮助.. 享受..!!!

    【讨论】:

      【解决方案4】:

      您可以使用 hack 设置更长的持续时间,如 here 所述

      【讨论】:

        【解决方案5】:

        //试试看

            public void myToast(String message) {
            LayoutInflater myInflator = getLayoutInflater();
            View myLayout = myInflator.inflate(R.layout.custom_layout,
                    (ViewGroup) findViewById(R.id.toastlayout));
            TextView myMessage = (TextView) myLayout.findViewById(R.id.label);
            myMessage.setText(message);
            Toast toast = new Toast(getApplicationContext());
            toast.setView(myLayout);
            toast.setDuration(400);
            myMessage.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL
                    | Gravity.CENTER_VERTICAL);
            toast.show();
        }
        

        【讨论】:

        • 我认为这对延长持续时间没有任何作用。如果持续时间不是 LENGTH_SHORT 或 LENGTH_LONG,则默认为 LENGTH_LONG。此方法在本质上接受任意值,但实际上,如果值不为零,则只会更改行为(吐司长度)。
        【解决方案6】:

        普通的 Android Toast 类被编码为在调用 Toast 时仅接受 Toast.LENGTH_SHORT 或 Toast.LENGTH_LONG 参数。这些参数的值分别为 0 和 1,调用 setDuration() 时不接受任何毫秒值;如果您必须显示 Toast 的持续时间与您可以考虑使用我的 SuperToasts 库中的类不同。库中的 SuperToast 类模仿了现有的 Android Toast 类,可以将任何毫秒值用作持续时间参数。由于这些 Toast 的挥之不去的影响,我不建议使用此类来显示比最大库存 Android Toast 长度的 Toast。我建议您使用 SuperActivityToast 类在 Activity/Fragment 中显示 Toast 消息,因为 Toast 将与您的 Activity 一起被销毁,从而消除了任何挥之不去的消息的机会。要使用此类,您可以创建一个新对象:

        SuperActivityToast superActivityToast = new SuperActivityToast(this);  
        superActivityToast.setDuration(SuperToast.DURATION_SHORT); 
        // setDuration(); can also accept millisecond values
        // superActivityToast.setDuration(1000);  
        superActivityToast.setText("Hello world!");  
        superActivityToast.show();  
        

        或者使用静态方法:

        SuperActivityToast.createDarkSuperActivityToast(this, "Hello world!", SuperToast.DURATION_SHORT).show();  
        

        您还可以在库中使用大量自定义选项,请查看Wiki 页面!

        【讨论】:

          【解决方案7】:

          这是另一种配置时间的方法:

          public void showMsg(String msg, final long duration) {
              final Toast toast = Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG);
              toast.show();
              Thread t = new Thread() {
                  public void run(){
                      try {
                          sleep(duration);
                          toast.cancel(); 
                      } catch (InterruptedException e) {
                          e.printStackTrace();
                      }
                      finally { }
                  }
              };
              t.start();
          }
          

          注意:持续时间以毫秒为单位。

          【讨论】:

            猜你喜欢
            • 2011-06-09
            • 1970-01-01
            • 1970-01-01
            • 2021-05-23
            • 2022-10-19
            • 2015-08-29
            • 2012-05-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多