Android 自定义Toast显示时间 禁止使用setDuration 但第二次失败
时间: 2023-12-03 17:42:05 浏览: 191
Android 自定义 Toast 显示时间
5星 · 资源好评率100%
可以通过以下步骤实现自定义Toast的显示时间:
1. 自定义一个Toast的布局文件,例如:toast_layout.xml。
2. 在代码中加载该布局文件,并设置Toast的显示时间。
``` java
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.toast_layout, null);
Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
// 设置显示时间
final int DELAY_TIME = 2000;
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
toast.cancel();
}
}, DELAY_TIME);
toast.show();
```
在上面的代码中,通过Toast的setView方法设置了自定义的布局文件,然后通过Handler定时取消Toast的显示。
注意:这里设置的显示时间需要根据实际情况进行调整,DELAY_TIME为毫秒数。
3. 如果需要多次显示Toast,可以将以上代码封装成一个方法,然后在需要显示Toast的地方调用该方法即可。
``` java
public static void showCustomToast(Context context, String msg) {
LayoutInflater inflater = LayoutInflater.from(context);
View layout = inflater.inflate(R.layout.toast_layout, null);
TextView text = (TextView) layout.findViewById(R.id.text);
text.setText(msg);
Toast toast = new Toast(context);
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
final int DELAY_TIME = 2000;
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
toast.cancel();
}
}, DELAY_TIME);
toast.show();
}
```
在需要显示Toast的地方调用:
``` java
showCustomToast(getApplicationContext(), "自定义Toast显示时间");
```
阅读全文