在Android中是否可以自定义Toast,例如在其中放置图像图标和按钮?
你也可以使用常规的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));
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();
你可以使用setView在Toast中放置任何视图,但是我不确定为什么你想把一个按钮放在里面,因为Toast会很快消失。以下内容摘自官方开发者网站:
当视图显示给用户时,它将作为浮动视图出现在应用程序上方,永远不会接收焦点。用户可能正在输入其他内容。我们的想法是尽可能地不引人注目,同时向用户展示您想让他们看到的信息。
因此,Toast只应用于显示信息。对于更复杂的交互,您可以使用Dialog。
Toast不可聚焦。添加按钮没有意义。但是您可以显示信息。您还可以通过对Toast类进行一些更改来控制其可见性,这意味着您可以隐藏和显示。