为什么 Toast.setGravity() 不起作用

Gru*_*Cat 2 android android-toast

大家好,我有 2 个这样的 Toast 版本

版本 1:

Toast.makeText(getApplicationContext(),"hello",Toast.LENGTH_LONG).setGravity(Gravity.CENTER,0,0).show();
Run Code Online (Sandbox Code Playgroud)

版本 2:

Toast t = Toast.makeText(getApplicationContext(),"hello",Toast.LENGTH_LONG);
      t.setGravity(Gravity.CENTER,0,0);
      t.show();
Run Code Online (Sandbox Code Playgroud)

版本 2 工作正常,但版本 1 不行。它给出了错误无法解决方法 show()。这里出了什么问题?

当我编写版本 1 删除 setGravity() 方法时,它工作正常

Toast.makeText(getApplicationContext(),"hello",Toast.LENGTH_LONG).show();
Run Code Online (Sandbox Code Playgroud)

你们能解释一下吗。

rad*_*vus 13

我只是在尝试做《Android 编程:大书呆子牧场》一书中的扩展挑战时尝试这样做

然后我查了官方文档,发现它现在被忽略了。

官方文档来看,当在较新的 Android 版本上运行时,这是一个 no-op(无操作)。

这些是自原始帖子以来发生的更改。

gravity.setGravity 是空操作


Ani*_*bey 6

Toast.makeText(this, getString(R.string.back_not_allowed), Toast.LENGTH_SHORT)返回一个Toast实例,以便您可以调用show()它的功能,但Toast.makeText(this, getString(R.string.back_not_allowed), Toast.LENGTH_SHORT).show()回报void,所以你不能使用setGravity(Gravity.CENTER,0,0)过它。这就是您必须Toast在变量中获取实例然后使用它的原因。