Day 6 | 讯息提示元件

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()

<<:  LeetCode解题 Day06

>>:  D5: [漫画]工程师太师了-第3话

Ruby幼幼班--Best Time to Buy and Sell Stock

Best Time to Buy and Sell Stock 题目连结:https://leet...

Day 12 实作资料库

前言 今天会实作资料库的结构。我们总共需要实作三个 table 的 scheme,分别是 users...

[DAY 24]Embed功能

今天主要是来介绍一下文字嵌入(Embed)这功能 如果想要在讯息里使用mark down功能的话需要...

[Day12]Die Game

上一篇介绍了Bangla Numbers,由於数字太大,所以选择使用了BigInteger,但各位也...

JavaScript Day 12. 每个元素都做运算的 map()

这一篇要来讨论另一个跟 filter 很相似的方法 map,在我们讨论 map 的同时,也可能会觉得...