gpt4 book ai didi

android - 是否可以创建可点击的类似 Toast 的通知?

转载 作者:太空狗 更新时间:2023-10-29 16:37:41 26 4
gpt4 key购买 nike

我需要显示一个最小侵入性的非阻塞通知,它与其显示的 Activity 相关(如 Toast)这是可点击的。任何人都知道这是否可能?不幸的是,似乎 Toast通知(自定义或其他)不可点击(即在其 View 上设置 OnClickListener 无效)。我知道的所有替代方案(即 AlertDialogPopupWindowCrouton )似乎都显示了一个与其显示的 Activity 相关的通知(即当 Activity 结束时它们不会继续显示).有什么建议吗?

最佳答案

您可以使用 PopupWindow,添加一个 onClickListener 并添加一个 handler 以在 n 次后自动取消它(就像 toast )。像这样:

public static void showToast(Activity a, String title, String message) {

// inflate your xml layout
LayoutInflater inflater = a.getLayoutInflater();
View layout = inflater.inflate(R.layout.custom_toast,
(ViewGroup) a.findViewById(R.id.toast_layout_root));

// set the custom display
((TextView) layout.findViewById(R.id.title)).setText(title);
((TextView) layout.findViewById(R.id.message)).setText(message);

// initialize your popupWindow and use your custom layout as the view
final PopupWindow pw = new PopupWindow(layout,
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT, true);

// set windowType to TYPE_TOAST (requires API 23 above)
// this will make popupWindow still appear even the activity was closed
pw.setWindowLayoutType(WindowManager.LayoutParams.TYPE_TOAST);
pw.showAtLocation(layout, Gravity.CENTER | Gravity.TOP, 0, 500);

// handle popupWindow click event
layout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// do anything when popupWindow was clicked
pw.dismiss(); // dismiss the window
}
});

// dismiss the popup window after 3sec
new Handler().postDelayed(new Runnable() {
public void run() {
pw.dismiss();
}
}, 3000);
}

xml布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toast_layout_root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000"
android:orientation="vertical"
android:elevation="10dp"
android:padding="20dp">

<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="#FFF"
android:textStyle="bold"/>

<TextView
android:id="@+id/message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="#FFF"/>

</LinearLayout>

关于android - 是否可以创建可点击的类似 Toast 的通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24653152/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com