原生的安卓Toast提示栏在UI界面底端,若与用户交互的焦点在屏幕偏上方,则需要稍作调整以达到友好的提示用户相关信息的需求。
1)Toast提示有两个Toast类的静态方法,需区别开来。
①Toast.maketext(Context context,Charsequence text,int duration).show();Context上下文,“Charsequence text”来设定提示用户的提示,里面设定的字符串内容。int duration 参数支持Toast类提供的静态常量,LENGTH_SHORT/0 表示短时间,LENGTH_LONG/1表示长时间
②Toast makeText(Context context, StringRes int resId, Duration int duration) 在源代码中可以看出
① 与② 就中间参数有点差异,返回的结果则差之千里,①返回的是Toast对象②返回的是本身,源代码中这个API 除了抛了个异常throws Resources.NotFoundException之外什么都没做。
2)下面谈一下实际应用,通常我们在代码中用如下来创建一个提示:
3)原生的Toast我们一般在开发过程中用用没问题,如果在开发的App中有的需要设置Toast提示的位置,达到提示的醒目的友好目的,那么就需要我们设定位置或者自定义布局来达到需求了。实现步骤如下:
①先通过Toast的无参构造方法new一个Toast对象,然后调用Toast对象的setView (View view)方法 需要传入一个view 对象。
②调用Context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)获得LayoutInflater 对象inflate
③调用inflate.inflate(int resource, ViewGroup root)即可获得view对象
④调用Toast.setGravity(int gravity, int xOffset, int yOffset)设置消息提示的位置
⑤调用Toast对象的show()方法即可达到目的。
public static Toast makeText(Context context, CharSequence text, 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;
}