使android toast不可取消
我正在我的应用程序中显示祝酒词。问题在于,在某些设备(三星galaxy s6)中,触摸屏幕时会取消toast。此问题在其他设备(Nexus 5)中不会发生 这是我的密码使android toast不可取消,android,toast,Android,Toast,我正在我的应用程序中显示祝酒词。问题在于,在某些设备(三星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(getApplica
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();
toast在一个小弹出窗口中提供有关操作的简单反馈。它只填充消息所需的空间量,并且当前活动保持可见和交互式。 toast不会与用户交互,就像“来来去去”一样,您不能将其设置为可取消的true或false。 你应该使用它来实现你想要的。后退一步 如果您需要更多的控制,请避免使用
Toast
,并使用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\u DELAY=3500代码>
但是等等!对话框需要焦点,我需要保留它!
好吧,好吧,你可能在编辑文本
中写作,而对话框
就像一个吐司
控制着你的焦点,你的键盘隐藏了,一切都丢失了。为了防止这种情况,只需设置一个额外的标志,它将告诉对话框它不可聚焦,并且它不应该尝试请求它
dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
请记住,如果您通过查看EditText
中的文本变化来显示Toast
,您应该保留某种标志,以了解它是否正在显示、是否已经显示或其他任何内容,否则您将得到多个对话框。如文档所示:
toast在一个小弹出窗口中提供有关操作的简单反馈。它只填充消息所需的空间量,并且当前活动保持可见和交互式。例如,在发送电子邮件之前离开电子邮件会触发“草稿已保存”toast,让您知道以后可以继续编辑。烤面包会在超时后自动消失
对于您解释的行为,您确实使用了无限时间的snackbar
但如何避免在某些设备上取消敬酒?您所说的某些设备是什么意思?在三星galaxy s6中。我显示烤面包片,当我触摸屏幕时,烤面包片就会消失。我想你需要使用提醒对话框。查看更新答案。使用带有无限时间参数的快餐店。我有一个问题。我需要在customToast可见时继续在键盘上书写。我该怎么做?