iT邦幫忙

2021 iThome 鐵人賽

DAY 6
0
自我挑戰組

社畜轉行之旅,30天Kotlin學習筆記系列 第 6

Day 6 | 訊息提示元件

  • 分享至 

  • xImage
  •  

Toast

訊息顯示後會於數秒內消失,是最常用的提示訊息,使用makeText()產生

Toast.makeText(this, "文字訊息", Toast_LENGTH_SHORT).show()

第一個參數為使用toast的對象,通常填入this關鍵字(即本身的Activity實體)

第二個參數為顯示的文字訊息

第三個參數為持續時間,分成短時間Toast_LENGTH_SHORT與長時間Toast_LENGTH_LONG

客製化Toast

//Step1:初始化Toast
val toast = Toast(this)
//Step2:指定Toast的顯示位置
toast.setGravity(Gravity.Top, 0, 50)
//Step3:設定持續時間,用法同makeText的第三個參數
toast.duration = Toast.LENGTH.SHORT
//Step4:放入自定義的畫面(開發者需自行設定Layout檔,並將其指定給Toast的View)
toast.view = layouytInflater.inflate(R.layout.custom_toast, null)
//Step5:透過show()方法將Toast顯示於畫面
toast.show()

Snackbar

Snackbar是因為Google發布的設計準則-Material Design所設計的訊息元件,解決了Toast很多問題(如畫面消失時Toast仍存在),其一次只顯示一個訊息,除了文字訊息外附帶一個回應的按鈕,讓使用者可以進行回應

Snackbar.make(it, "文字訊息", Snackbar.LENGTH_INDEFINITE).setAction("按鈕"){
			//此處撰寫按鈕觸發後的程式碼
}.show()

第一個參數為元件對象,當元件對象被銷毀,Snackbar也隨之消失

第二個參數為顯示的訊息字串

第三個參數為持續時間,除了短時間LENGTH_SHORT與長時間LENGTH_LONG,還提供了無限制時間LENGTH_INDEFINITE

若要顯示回應按鈕,可使用setAction方法設定按鈕的文字與監聽器

參數設定後用show的方法將Snackbar顯示於手機螢幕

AlertDialog

彈跳視窗,不僅可顯示文字,還可以設定多種不同類型的元件,當開發者需要顯示一則訊息並希望使用者能與其互動,就會選擇AlertDialog

  • setTitle():標題
  • setMessage():內容
  • setItem():列表內容
  • setSingleChoiceItem():單選列表
  • setPositiveButton():正面按鈕(右下)
  • setNegativeButton():負面按鈕(正面按鈕左邊)
  • setNeutralButton():中立按鈕(左下)
  • show():顯示於螢幕

含按鈕的AlertDialog


AlertDialog.Builder(this)
	.setTitle("這邊是標題")
	.setMessage("這邊是彈窗內容")
	.setNeturalButton("這是按鈕"){ dialog, whitch ->
	//下面寫按鈕被擊中時要做的事情,這裡為顯示按鈕
		  Toast.makeText(this, "按鈕", Toast_LENGTH_SHORT).show()
	}.show()

第一個參數為按鈕顯示名稱,第二個參數為DialogInterface類別中的OnClickListener監聽器。由於正面按鈕、負面按鈕、中立按鈕寫法相同,只是位置不同,因此使用時可自行調整按鈕文字與監聽事件,不用拘泥於方法名稱。

含列表的AlertDialog

//建立選單上的文字
val item = arrayOf("A","B","C","D","E")

AlertDialog.Builder(this)
	.setTitle("這邊是標題")
	.setItems(item){dialogInterface, i ->
		//顯示被點擊的項目
		Toast.makeText(this, "你選的是${item[i]}", Toast_LENGTH_SHORT).show()
	}.show()

第一個參數為字串陣列,第二個參數為DialogInterface類別中的OnClickListener監聽器,監聽器的第二個參數會回傳被點擊的項目編號

單選式的AlertDialog

val item = arrayOf("A","B","C","D","E")
val position = 0
//建立AlertDialog物件
AlertDialog.Builder(this)
	.setTitle("這邊是標題")
	.setSingleChoiceItem(item, 0){dialogInterface, i ->
			//紀錄被按下的位置
			position = i
	}
	.setPositiveButton("確定"){dialog, whitch ->
			//顯示被點擊的項目
			Toast.makeText(this, "你選的是${item[position]}", Toast_LENGTH_SHORT).show()
	}.show()

上一篇
Day 5 | Fragment
下一篇
Day 7 | 清單元件 - 純文字
系列文
社畜轉行之旅,30天Kotlin學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言