大家好,小編今天又和大家見面了,今天給大家帶來高級組件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 明天見,晚安。