第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > Toast类实现消息提示框

Toast类实现消息提示框

时间:2019-11-09 19:17:07

相关推荐

Toast类实现消息提示框

Toast类实现消息提示框的方式有两种:

使用静态方法makeText()方法

以下面那个为例吧,第一个参数是一个上下文对象,第二个参数是要显示的数据,第三个参数是要显示数据的时长。

我们来看看他低层是怎么实现的:

public static Toast makeText(Context context, CharSequence text, @Duration int duration) {Toast result = new Toast(context);LayoutInflater inflate = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);View v = inflate.inflate(com.android.internal.R.layout.transient_notification, null);TextView tv = (TextView)v.findViewById(com.android.internal.R.id.message);tv.setText(text);result.mNextView = v;result.mDuration = duration;return result;}

首先是将布局文件实例化成view对象,在来看看这个com.android.internal.R.layout.transient_notification文件

<LinearLayout xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:background="?android:attr/toastFrameBackground"><TextViewandroid:id="@android:id/message"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:layout_gravity="center_horizontal"android:textAppearance="@style/TextAppearance.Toast"android:textColor="@color/bright_foreground_dark"android:shadowColor="#BB000000"android:shadowRadius="2.75"/></LinearLayout>

我的理解就是Toast类就是在低层调用了一个事先写好的只有一个TextView的xml文件。我们只需要在调用makeText时输入相应的数据,就可以直接用了。

我们在来看第二种方法:直接实例化一个新的Toast对象。

Toast toast=new Toast(MainActivity.this);

Toast类的一些主要方法:

setText():显示的内容,支持字符串和字符串资源ID

setGravity():这个是显示的对齐方式,后面两个参数是针对前面对齐方式的x/y偏移量。

setMargin():margin,也就是外边距。比如我们通过Gravity设置显示在左上角,然后设置这两个值为0.5f,则Toast的左上角会现实在屏幕的中央

setView():设置显示内容视图,自定义和他的关系密不可分。

要实现自定的toast很简单,首先先自定义一个xml文件,你想让他显示什么就怎么写。在将这个xml文件用View.inflate方法解析成view类型的,然后直接通过setView()设置就可以了。如:

xml文件:

实现:

效果:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。