gpt4 book ai didi

Android: 有没有什么好的方法可以创建类似 Toast 的对话框?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:00:49 25 4
gpt4 key购买 nike

我想向用户显示一些信息,但我不希望在用户点击其他地方或按下后退按钮之前关闭这些信息。我意识到最明显的选择是在对话框中显示文本(而不是 toast )。我希望我的对话框类似于系统 Toast。我认识到我可以只复制 transient_notification.xml 布局(及其相关资源),但由于 Toast 样式因设备和操作系统而异,因此不太可能产生良好的匹配。

那么,有没有一种好的方法来创建一个继承系统Toast样式的Dialog?

最佳答案

或者你可以使用自定义布局

显示 toast 的自定义方法

public static Toast currentToast;
/**
* Use a custom display for Toasts.
*
* @param message
*/
public static void customToast(String message) {
// Avoid creating a queue of toasts
if (currentToast != null) {
// Dismiss the current showing Toast
currentToast.cancel();
}
//Retrieve the layout Inflater
LayoutInflater inflater = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//Assign the custom layout to view
View layout = inflater.inflate(R.layout.custom_toast, null);
//Return the application context
currentToast = new Toast(context.getApplicationContext());
//Set toast gravity to center
currentToast.setGravity(Gravity.CENTER | Gravity.CENTER, 0, 0);
//Set toast duration
currentToast.setDuration(Toast.LENGTH_LONG);
//Set the custom layout to Toast
currentToast.setView(layout);
//Get the TextView for the message of the Toast
TextView text = (TextView) layout.findViewById(R.id.text);
//Set the custom text for the message of the Toast
text.setText(message);
//Display toast
currentToast.show();
// Check if the layout is visible - just to be sure
if (layout != null) {
// Touch listener for the layout
// This will listen for any touch event on the screen
layout.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// No need to check the event, just dismiss the toast if it is showing
if (currentToast != null) {
currentToast.cancel();
// we return True if the listener has consumed the event
return true;
}
return false;
}
});
}
}

custom_toast.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="10dip"
android:background="@drawable/custom_toast_shape">

<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:textColor="@color/blue"
android:textSize="16sp"
android:text="@string/app_name"
/>

<View
android:layout_gravity="center"
android:layout_width="fill_parent"
android:layout_height="2dip"
android:background="@color/blue"
/>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/black"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:maxEms="15"
android:gravity="center_horizontal"
android:id="@+id/text"
/>
</LinearLayout>

要使用它只需调用

Utils.customToast("Just a test to see if toast is working!\nPerfect");

编辑我稍微修改了方法。现在它不会创建 toast 队列,并且会在触摸时被取消,就像普通的 toast 一样。

如果其他人可以改进它,请随意这样做:)

关于Android: 有没有什么好的方法可以创建类似 Toast 的对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16068081/

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