Toast.setGravity() 在我的 AVD Nexus 6 API 30 中不起作用

sho*_*per 11 java android android-toast

我设置了吐司的重力,使其显示在屏幕顶部,代码如下\xef\xbc\x9a

\n
Toast toast = Toast.makeText(getActivity(), "\xe9\x82\xae\xe7\xae\xb1\xe5\x9c\xb0\xe5\x9d\x80\xe4\xb8\x8d\xe8\x83\xbd\xe4\xb8\xba\xe7\xa9\xba\xef\xbc\x81", Toast.LENGTH_SHORT);\ntoast.setGravity(Gravity.TOP, 0, 0);\ntoast.show();\n
Run Code Online (Sandbox Code Playgroud)\n

它在带有 LogCat 消息的 AVD Nexus 6 API 30 中不起作用:

\n
E/Toast: setGravity() shouldn't be called on text toasts, the values won't be used\n
Run Code Online (Sandbox Code Playgroud)\n

但是,当我在 Android 9 的诺基亚 X6 手机上安装该 apk 时,似乎没问题。\n请帮助我!

\n

BVa*_*tur 12

正如 Android 文档中有关 Toast setGravity方法所述,此方法对于运行API30或更高版本的设备不再适用。我想您的项目的targetSdk设置为 30。

警告:从 Android Build.VERSION_CODES#R 开始,对于面向 API 级别 Build.VERSION_CODES#R 或更高版本的应用程序,在文本 toast 上调用此方法时,此方法是无操作的。

来源:https://developer.android.com/reference/android/widget/Toast#setGravity(int,%20int,%20int)


小智 7

文本 Toast 无法再自定义。您需要创建一个简单的 Toast 才能进行自定义。您还需要将消息文本添加到单独的视图文件中。

        Toast toast = new Toast(getContext());
        View toast_view = LayoutInflater.from(getContext()).inflate(R.layout.toast_text, null);
        toast.setView(toast_view);
        toast.setDuration(Toast.LENGTH_SHORT);
        toast.setGravity(Gravity.CENTER, 0, 0);
        toast.show();
Run Code Online (Sandbox Code Playgroud)