Toast.setGravity() does not work in my AVD Nexus 6 API 30
Asked Answered
B

2

11

I set the gravity of my toast to make it show on the top of the screen, with code below:

Toast toast = Toast.makeText(getActivity(), "邮箱地址不能为空!", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.TOP, 0, 0);
toast.show();

it does not work in my AVD Nexus 6 API 30 with LogCat message:

E/Toast: setGravity() shouldn't be called on text toasts, the values won't be used

however it seems fine when I install the apk on my phone Nokia X6 with Android 9. please help me!!

Braddock answered 25/11, 2020 at 11:56 Comment(0)
E
12

As it said in Android documentation about Toast setGravity method, this method doesn't work anymore for devices running API30 or higher. I suppose you have targetSdk set to 30 for your project.

Warning: Starting from Android Build.VERSION_CODES#R, for apps targeting API level Build.VERSION_CODES#R or higher, this method is a no-op when called on text toasts.

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

Encarnalize answered 25/11, 2020 at 12:34 Comment(0)
D
7

Text Toasts can no longer be customized. You'll need to create a simple Toast in order to customize. You will also need to add your message text to a separate View file.

        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();
Deina answered 1/6, 2021 at 18:10 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.