浅谈自定义Toast~~

论坛 期权论坛 脚本     
匿名技术用户   2020-12-21 15:16   25   0

大家好,小编今天又和大家见面了,今天给大家带来高级组件Toast提示框的自定义,相信很多友友都感兴趣吧,废话不多说,直接上今天要开讲的代码运行成功界面。

如下:



相信大伙非常吃惊,Toast提示框能做到那么美观有个性,完全不像自身的提示框那样呆板,只有黑色背景,和文本,而我自定义的Toast控件就不同了,不但有文字和背景还有绚丽的图片呢。下面就由我默默为大家讲解其中的大道理害羞


首先介绍一下,自定义Toast有两种方式,一种是代码方式,另一种是xml方式。

第一种:代码方式生成自定义Toast.

本篇就不详细介绍布局了,它主要是由两个按钮组成,大家们绝顶聪明,肯定没问题的。那行,我就开始进入正题了,我先把第一种方式用到的代码贴进来,再详解。

/**
* 代码生成自定义Toast
*/
public void byCode(View v) {

//创建Toast,context定义成员变量,并要初始化,这是很容易出错的地方
Toast toast = new Toast(context);

//创建线性布局

LinearLayout layout = new LinearLayout(context);

//设置布局的长宽
LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
layout.setLayoutParams(params);

//设置布局背景图片
layout.setBackgroundResource(R.drawable.bg_yellow);

//设置布局控件对齐方式,这里是居中垂直
layout.setGravity(Gravity.CENTER_VERTICAL);

//创建图片控件

ImageView image = new ImageView(context);
image.setImageResource(R.drawable.emoji_080);
//创建文本控件

TextView text = new TextView(context);
text.setText("大便便");

//在布局中添加生成的控件

layout.addView(image);
layout.addView(text);

//在Toast嵌入线性布局

toast.setView(layout);

//提示框持续时间
toast.setDuration(5000);

//提示框位置
toast.setGravity(Gravity.BOTTOM, 50, 100);

//把Toast提示框展示出来,关键的地方,少了这个,出现不了效果
toast.show();

}


第二种:xml生成自定义Toast

1.创建一个xml文件


<ImageView
android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/emoji_098" />

<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="我是大叔" />

2.编写src下的java文件

/**
* 代码生成自定义Toast
*/
public void byXml(View v) {

Toast toast = new Toast(context);

//关联要展示界面的xml文件,用的是LayoutInflater.from(context).inflate(资源ID,父类《通常设为空》)
View inflateView = LayoutInflater.from(context).inflate(
R.layout.xml_main, null);
toast.setView(inflateView);
toast.setDuration(5000);
toast.setGravity(Gravity.LEFT, 50, 100);
toast.show();

}

如果你要换图片和文字可以采用以下代码:

Toast toast = new Toast(context);
View inflateView = LayoutInflater.from(context).inflate(
R.layout.xml_main, null);

//创建一个新的图片文本控件,关键点在于为什么要inflateVIew.findViewById,因为你创建新的控件是在Toast里面

//创建的,假如没有这个,直接findViewId的话,肯定找不到Toast要显示的控件,这样会出现报错
ImageView img=(ImageView) inflateView.findViewById(R.id.img);
img.setImageResource(R.drawable.emoji_100);
TextView text=(TextView) inflateView.findViewById(R.id.text);
text.setText("我是章鱼");

toast.setView(inflateView);
toast.setDuration(5000);
toast.setGravity(Gravity.LEFT, 50, 100);
toast.show();


今天就到这里,希望大家都有所感悟,学到一点点知识,小编就满意了,夜深了,该洗洗睡了,送上小编最喜欢的一句话,每天叫你起床的不是闹钟,而是梦想。

see you 明天见,晚安。










分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP