Android 7.0.2自定义Toast显示时间 但第二次失败
时间: 2023-12-03 13:42:08 浏览: 80
你可以尝试通过以下几种方式来解决这个问题:
1. 使用 Handler 延迟执行 Toast 的取消操作,避免在 Toast 还未完全显示出来时就被取消了。例如:
```
final Toast toast = Toast.makeText(getApplicationContext(), "Custom Toast", Toast.LENGTH_LONG);
toast.show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
toast.cancel();
}
}, 2000);
```
2. 尝试使用自定义的 Toast 布局,通过在布局文件中设置 `android:animateLayoutChanges="true"` 属性来实现动画效果,同时也可以在代码中设置 Toast 显示的时间。例如:
```
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.custom_toast, (ViewGroup) findViewById(R.id.custom_toast_layout));
TextView text = (TextView) layout.findViewById(R.id.custom_toast_text);
text.setText("Custom Toast");
Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
toast.cancel();
}
}, 2000);
```
3. 如果你使用的是 Android 7.1 及以上版本,可以考虑使用 `Snackbar` 来替代 `Toast`。`Snackbar` 提供了更好的用户交互体验,并且可以通过设置持续时间来控制显示时间。例如:
```
Snackbar.make(view, "Custom Snackbar", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
```
阅读全文