普通的Toast用法没什么可说的,在这里记录一下自定义Toast的用法。
首先在drawable文件夹下创建一个资源文件用来自定义shape
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#ff0000ff"/>
<stroke android:width="1dp" android:color="#FFFFFFFF" />
<padding android:left="7dp" android:top="7dp"
android:right="7dp" android:bottom="7dp" />
<corners android:radius="40dp" />
</shape>
然后在layout文件夹下自定义一个想要toast的布局样式,将写好的drawable设置给布局。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/my_border">
<TextView
android:id="@+id/TextViewInfo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="这是一个自定义背景颜色的提示框"
android:layout_gravity="center_vertical"
android:textColor="#ff00ff00"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"/>
</LinearLayout>
最后调用toast.setView()将toastRoot设置进去就大功告成,并且可以toast.setGravity(Gravity.CENTER,300,0),参数分别为重心,x轴的偏移量,y轴的偏移量。
View toastRoot = getLayoutInflater().inflate(R.layout.my_toast, null);
Toast toast=new Toast(getApplicationContext());
toast.setView(toastRoot);
toast.setDuration(Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER,300,0);
TextView tv=(TextView)toastRoot.findViewById(R.id.TextViewInfo);
tv.setText("说明:这是一个自定义边框和底色的提示框。");
toast.show();