浅谈自定义Toast~~

大家好,小编今天又和大家见面了,今天给大家带来高级组件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 明天见,晚安。











發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章