简单的Android吐司没有正确对齐

Ric*_*rdo 14 android android-toast

我只是打电话给我Activity:

Toast.makeText(this, "This is a toast", Toast.LENGTH_SHORT).show()
Run Code Online (Sandbox Code Playgroud)

但结果是在toast容器的顶部对齐了一个文本,而不是它应该在内部居中:

在此输入图像描述

关于什么可能出错的任何想法?

Ric*_*rdo 32

我设法修复它.问题在于将属性android:fitsSystemWindows应用于活动的主题.我发现这个答案解释了为什么不应该这样做:

android:fitsSystemWindows属性适用于布局xml中的视图,而不是主题中的视图.

您所看到的是样式化属性系统在Android中的工作方式的效果.如果在视图元素上或在为视图指定的显式样式中未指定任何属性,则框架将检查是否已在主题本身上指定了该属性.如果在那里找到,则使用该值.由于toasts使用的视图使用您的activity的主题,因此会覆盖默认值false,并且您会看到此行为.

您不仅要通过在主题中指定它来更改顶级视图的fitsSystemWindows默认值,而是覆盖所有具有该主题的视图,这不是您想要的.您应该只在布局中的视图上指定fitsSystemWindows,或者在显式应用于布局中的视图的样式中指定fitsSystemWindows,而不是在主题上.

只需将属性应用于ViewGroup活动的最顶层(或样式)而不是其主题,并且将正确格式化toast.

  • 我在 Toast 中使用了 getApplicationContext() 来解决这个问题 (2认同)