我正在我的应用中祝酒。问题是在某些设备(三星galaxy s6)中,触摸屏幕时取消了Toast。这个问题在其他设备(Nexus 5)中没有发生
这是我的代码
LayoutInflater li = getLayoutInflater();
View layout = li.inflate(R.layout.popup_tutorial_privado, (ViewGroup)findViewById(R.id.popup));
toast = new Toast(getApplicationContext());
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();
答案 0 :(得分:1)
如果您需要更多控制权并使用Toast
在Dialog
时间之后解散自己,请完全避免使用n
。你可以编写一个像这个一样简单的方法,它可以产生与Toast
功能相同的东西,但可以更自由地控制何时以及如何解除它。
public void customToast(String message, int duration){
final Dialog dialog = new Dialog(MainActivity.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.custom_toast);
dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
dialog.setCancelable(false);
//Customize the views, add actions, whatever
((TextView)dialog.findViewById(R.id.message)).setText(message);
dialog.show();
//Auto cancel the dialog after `duration`
new Handler().postDelayed(new Runnable(){
@Override
public void run() {
dialog.cancel();
}
},duration);
}
如果您希望对话显示长吐司持续的确切时间,请使用3500
以后private static final int LONG_DELAY = 3500;
好吧,好吧,你可能在EditText
内写作而Dialog
表现得像Toast
一样控制你的焦点,键盘隐藏起来,一切都丢失了。为了防止这种情况,只需设置一个额外的标记,告诉Dialog
它不可调焦,并且它不应该尝试请求它。
dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
请注意,如果您通过观看Toast
中的文字更改来显示EditText
,则应该保留某种旗帜,以了解它是否会被显示,或者已经显示,或者其他什么,否则你最终会得到多个对话框。
答案 1 :(得分:0)
Toast在小弹出窗口中提供有关操作的简单反馈。它仅填充消息所需的空间量,并且当前活动保持可见和交互。 吐司不与用户互动,就像“来来往往”你不能将其设置为可取消的真假。 你应该使用Dialogs来实现你想要的目标。
答案 2 :(得分:0)
正如文件所示:
Toast在小弹出窗口中提供有关操作的简单反馈。它仅填充消息所需的空间量,并且当前活动保持可见和交互。例如,在发送电子邮件之前导航离开电子邮件会触发"草稿保存" toast,告诉您以后可以继续编辑。超时后,Toasts会自动消失。
对于你解释的行为,你确实使用了无限时间的零食吧 Snackbar documentation