淺談自定義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 明天見,晚安。











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