如何在Android中自定义Toast?

发布于 2024-11-18 09:20:03 字数 53 浏览 2 评论 0原文

Android 中可以自定义Toast吗?就像我们是否可以在其中放置图像图标和放置按钮一样。

Is it possible to make Customize Toast in Android. like if can we place in it image icon and place button.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

心碎无痕… 2024-11-25 09:20:03

您还可以使用常规 makeText() 并处理 getView ()设置一个图像,接下来看下一个。

Toast toast = Toast.makeText(context, text, Toast.LENGTH_SHORT);
TextView tv = (TextView) toast.getView().findViewById(android.R.id.message);
if (null!=tv) {
    tv.setCompoundDrawablesWithIntrinsicBounds(icon, 0, 0, 0);
    tv.setCompoundDrawablePadding(context.getResources().getDimensionPixelSize(R.dimen.padding_toast));

You can also use the regular makeText() and handle the getView() to set an image next to see the next.

Toast toast = Toast.makeText(context, text, Toast.LENGTH_SHORT);
TextView tv = (TextView) toast.getView().findViewById(android.R.id.message);
if (null!=tv) {
    tv.setCompoundDrawablesWithIntrinsicBounds(icon, 0, 0, 0);
    tv.setCompoundDrawablePadding(context.getResources().getDimensionPixelSize(R.dimen.padding_toast));
冷情 2024-11-25 09:20:03

您可以使用 将任何视图放入 Toast 中设置视图
但是,我不太确定为什么要在其中放置一个按钮,因为 Toast 会很快消失。取自官方开发者网站:

当视图显示给用户时,
显示为浮动视图
应用。永远不会收到
重点。用户可能会处于
正在输入其他内容的中间。
这个想法是要像
可能,同时仍然向用户显示
您希望他们看到的信息。

所以toast应该只用来显示信息。对于更复杂的交互,您可以使用对话框。

You can put any view in a Toast using setView.
However, I'm not quite sure why you would want to place a button in it, as a Toast will rapidly disappear. Taken from the officiel developer site :

When the view is shown to the user,
appears as a floating view over the
application. It will never receive
focus. The user will probably be in
the middle of typing something else.
The idea is to be as unobtrusive as
possible, while still showing the user
the information you want them to see.

So the toast should only be used to display information. For more complex interactions, you can use a Dialog.

何以笙箫默 2024-11-25 09:20:03

Toast 无法获得焦点。添加按钮没有意义。但是您可以显示信息。您还可以控制其可见性意味着您可以隐藏和显示
通过在 Toast 类中进行一些更改。

Toast is non focus able.Adding button did not make sense. However you can display information.You can also control its visibility means u can hide and show
by making few changes in Toast class.

寒江雪… 2024-11-25 09:20:03

XML 文件

enter code here`<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/toast_layout_root"
          android:orientation="horizontal"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:padding="8dp"
          android:background="#DAAA"
          >
<ImageView android:src="@drawable/droid"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_marginRight="8dp"
           />
<TextView android:id="@+id/text"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:textColor="#FFF"
          />

'

JAVA 代码

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

TextView text = (TextView) layout.findViewById(R.id.text);
text.setText("This is a custom toast");

Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();

XML FILE

enter code here`<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/toast_layout_root"
          android:orientation="horizontal"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:padding="8dp"
          android:background="#DAAA"
          >
<ImageView android:src="@drawable/droid"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_marginRight="8dp"
           />
<TextView android:id="@+id/text"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:textColor="#FFF"
          />

'

JAVA CODE

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

TextView text = (TextView) layout.findViewById(R.id.text);
text.setText("This is a custom toast");

Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文