添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

SeekBar 拉動改變值時會觸發 onProgressChanged 事件,以下設定 setOnSeekBarChangeListener

在 Kotlin 中,這邊的 object 為匿名類別,表示我要傳入的 OnSeekBarChangeListener,且同時覆寫 onProgressChanged;只是將這一串一起寫到 setOnSeekBarChangeListener 的簽名中。

seekBar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
        override fun onStartTrackingTouch(seekBar: SeekBar?) {}
        override fun onStopTrackingTouch(seekBar: SeekBar?) {}
        override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
            percent = progress
            percentView.text = "打折($progress%)"
            calculateResult()

以上也可以寫成

val seekBarChangeListener = object : SeekBar.OnSeekBarChangeListener {
            override fun onStartTrackingTouch(seekBar: SeekBar?) {}
            override fun onStopTrackingTouch(seekBar: SeekBar?) {}
            override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
                percent = progress
                percentView.text = "打折($progress%)"
                calculateResult()
seekBar.setOnSeekBarChangeListener(seekBarChangeListener)

EditText 事件處理

在 EditText 輸入完數字之後,我們希望在按下確定時能夠更新介面,所以在按下按鈕時去偵測動作

editText.setOnEditorActionListener { v, actionId, event ->
        if (actionId == EditorInfo.IME_ACTION_DONE) {
            calculateResult()
        false

這邊的 setOnEditorActionListener 寫法是更簡潔的 Lambda 寫法
也可以寫成

editText.setOnEditorActionListener(object : TextView.OnEditorActionListener {
    override fun onEditorAction(v: TextView?, actionId: Int, event: KeyEvent?): Boolean {
        if (actionId == EditorInfo.IME_ACTION_DONE) {
            calculateResult()
        return false

這邊要注意 onEditorAction 的回傳值,代表是否要保留鍵盤。