📜  android studio 让 toast 出现在屏幕顶部 - Java (1)

📅  最后修改于: 2023-12-03 15:13:20.988000             🧑  作者: Mango

Android Studio 让 Toast 出现在屏幕顶部

Toast 是 Android 开发中常用的一种提示组件,它可以在屏幕上方短暂显示一段文字,用于向用户提供简单的反馈信息。默认情况下,Toast 会出现在屏幕的中间位置,但有时需求需要将 Toast 显示在屏幕的顶部。

方法一:使用自定义 Toast 布局

首先,我们可以创建一个自定义的 Toast 布局,让它位于屏幕的顶部位置。下面是一个示例的自定义布局 toast_layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toast_layout_root"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#555555"
    android:gravity="center_vertical"
    android:orientation="horizontal"
    android:padding="16dp">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_info" />

    <TextView
        android:id="@+id/toast_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#FFFFFF"
        android:textSize="16sp"
        android:text="This is a custom toast message" />

</LinearLayout>

在上述布局中,我们使用了一个线性布局来包裹一个图标和一段文字。

接下来,在代码中使用该自定义布局来显示 Toast,同时将 Toast 的位置设置为顶部:

// 创建自定义 Toast 布局的视图对象
View toastView = LayoutInflater.from(context).inflate(R.layout.toast_layout, null);

// 创建 Toast 对象
Toast toast = new Toast(context);

// 设置 Toast 的位置为顶部
toast.setGravity(Gravity.TOP, 0, 0);

// 设置 Toast 的显示时长
toast.setDuration(Toast.LENGTH_SHORT);

// 设置 Toast 的视图为自定义布局
toast.setView(toastView);

// 显示 Toast
toast.show();

通过上述代码,我们创建了一个自定义的 Toast 布局视图对象,并将其应用于 Toast。然后,我们将 Toast 的位置设置为顶部,并设置了显示时长和自定义视图。最后,我们调用 show() 方法来显示 Toast。

方法二:使用 Snackbar

另一种让 Toast 出现在屏幕顶部的方法是使用 Snackbar。Snackbar 是一个更为强大的提示组件,它可以显示更复杂的提示信息,并且可以轻松地实现位于屏幕顶部的效果。

要使用 Snackbar,首先需要添加以下依赖到你的 app 的 build.gradle 文件中:

implementation 'com.google.android.material:material:1.4.0'

然后,在代码中使用 Snackbar 来显示提示信息,并设置位置为顶部:

Snackbar snackbar = Snackbar.make(view, "This is a snackbar message", Snackbar.LENGTH_SHORT);
View snackbarView = snackbar.getView();
FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) snackbarView.getLayoutParams();
params.gravity = Gravity.TOP;
snackbarView.setLayoutParams(params);
snackbar.show();

通过上述代码,我们创建了一个 Snackbar 对象,并将其显示位置设置为顶部。然后,我们使用 show() 方法来显示 Snackbar。

使用 Snackbar 的好处是可以更灵活地自定义提示信息,例如添加按钮或设置点击事件等。

以上就是两种让 Toast 出现在屏幕顶部的方法,根据自己的需求选择适合的方法即可。希望对你有所帮助!