厌倦了网易新闻无处不在的喷子,尝试了一下腾讯新闻,果然顿时清净了很多,当然这不是重点。个人感觉腾讯新闻客户端的Toast比较不错,相对于系统默认的Toast,更加能起到提醒的作用。于是反编译了一下,简单分享一下,其实很简单。
先看效果
背景为深灰色,支持设置图片和文字。
布局文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
| <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:id="@+id/view_tips_layout"
android:background="@drawable/tips_bg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android">
<View
android:layout_width="160.0dip"
android:layout_height="160.0dip"
android:layout_centerInParent="true" />
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true">
<ImageView
android:gravity="center"
android:layout_gravity="center"
android:id="@+id/tips_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10.0dip"
android:src="@drawable/tips_error"
android:contentDescription="@null" />
<TextView
android:textSize="17.0sp"
android:textColor="#ffffffff"
android:gravity="center"
android:layout_gravity="center"
android:id="@+id/tips_msg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:lineSpacingExtra="3.0dip" />
</LinearLayout>
</RelativeLayout>
|
程序代码
1
2
3
4
5
6
7
| Toast toast = new Toast(getApplicationContext());
View toastView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.view_tips, null);
((ImageView)toastView.findViewById(R.id.tips_icon)).setImageResource(R.drawable.ic_launcher);
((TextView)toastView.findViewById(R.id.tips_msg)).setText("Error Occurs");
toast.setView(toastView);
toast.setGravity(Gravity.NO_GRAVITY, 0, 0);
toast.show();
|
Toast默认的位置为底部水平居中。我们可以通过设置setGravity(int, int, int)来进行设置位置。该方法接受三个参数,一个Gravity常量,一个x(水平)方向上的偏移量,一个y(竖直)方向上的偏移量。
如果我们想让位置向右我们需要增加x方向上的偏移量,如果想让位置向下,增大y方向上的偏移量。
多说
我们可以根据自己的需求去设置图片,文字,背景色等样式来定制想要的Toast。
注意,涉及到长度宽度字体大小相关的建议放到dimens文件,便于我们进行设备适配。
示例下载
百度网盘