如何在Android中自定义Toast

我是Android新手,正在开发一个示例应用程序。 我想了解我们如何自定义默认的Android Toast。 我想改变吐司的颜色,风格和其他属性。

我们可以在Toast中添加Image吗?

我阅读以下poststackOverflow

如何在Android中自定义Toast? 。 在android中自定义敬酒

但没有一个解释如何在Toast中添加图像。

是的,我们可以改变吐司的颜色,大小,位置和其他属性。 我们也可以添加一个图片吐司。

一个很好的博客 如何在Android中自定义Toast所有的内容都是从这个博客中获取的

您可以创build一个XML并将其夸大Toast。

你也可以在运行时做到这一点

LinearLayout layout=new LinearLayout(this); layout.setBackgroundResource(R.color.LightOrange); TextView tv=new TextView(this); // set the TextView properties like color, size etc tv.setTextColor(Color.RED); tv.setTextSize(15); tv.setGravity(Gravity.CENTER_VERTICAL); // set the text you want to show in Toast tv.setText("My Custom Toast at Bottom of Screen"); ImageView img=new ImageView(this); // give the drawble resource for the ImageView img.setImageResource(R.drawable.myimage); // add both the Views TextView and ImageView in layout layout.addView(img); layout.addView(tv); Toast toast=new Toast(this); //context is object of Context write "this" if you are an Activity // Set The layout as Toast View toast.setView(layout); // Position you toast here toast position is 50 dp from bottom you can give any integral value toast.setGravity(Gravity.BOTTOM, 0, 50); toast.show(); 
 LayoutInflater inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View layout = inflater.inflate(R.layout.cred_menu_like_popup, (ViewGroup) activity.findViewById(R.id.like_popup_layout)); ImageView imageView = (ImageView) layout.findViewById(R.id.like_popup_iv); TextView text = (TextView) layout.findViewById(R.id.like_popup_tv); text.setText("Like"); Toast toast = new Toast(activity.getApplicationContext()); toast.setGravity(Gravity.BOTTOM, 0, 200); toast.setDuration(Toast.LENGTH_LONG); toast.setView(layout); toast.show(); 

这是布局

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/like_popup_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="@drawable/customshapetransparent" android:paddingTop="35dp" android:paddingBottom="25dp" android:paddingLeft="35dp" android:paddingRight="35dp" > <ImageView android:id="@+id/like_popup_iv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:layout_centerHorizontal="true" /> <TextView android:id="@+id/like_popup_tv" android:layout_below="@id/like_popup_iv" android:layout_marginTop="10dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:textStyle="bold" android:textColor="@android:color/white" android:textSize="20sp" /> </RelativeLayout> 

自定义形状布局是:

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <solid android:color="#60000000" /> <corners android:radius="8dp" /> </shape> 

自定义吐司形状和颜色使用这个。

 Toast toast = Toast.makeText(getApplicationContext(), "You not Subscribe Try again", Toast.LENGTH_LONG); View vieew = toast.getView(); // vieew.setBackgroundColor(Color.parseColor("#BD8BDC")); vieew.setBackgroundResource(R.drawable.textinputborder); toast.setView(vieew); toast.show(); //This displays the toast for the specified lenght. 

也可以在R.drawable.textinputborder中使用

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle"> <solid android:color="#83BB66" /> <stroke android:width="1dp" android:color="#1B200A" /> <corners android:radius="20dp" /> </shape> </item> </selector> 

首先devise你的定制界面…为了简单起见,我devise了如下的定制界面:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/CustomToastLayoutRoot" android:orientation="vertical"> <ImageView android:layout_width="match_parent" android:layout_height="wrap_content" android:src="@drawable/close" android:id="@+id/imageView" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Warning !!!" android:id="@+id/textView" android:layout_gravity="bottom" /> </LinearLayout>