iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 1
0
Software Development

英國研究顯示,連續30天用Kotlin開發Android將有益於身心健康系列 第 1

Android Kotlin 實作 Day 1 : Tap Counter ( 使用自定義 Menu )

使用語言

  • Kotlin

使用物件

  • TextView
  • Button
  • Menu

xml資源檔配置

  • 一個 Layout 含 TextView 及 Button
  • 在 res 資料夾下新建一個資料夾,名稱需為 menu,並在 menu 資料夾下建立 xml 檔
    透過此方式可在上方標題欄新增自定義按鈕

Menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <item
        android:id="@+id/reset"
        android:title="RESET"
        android:visible="true"
        app:showAsAction="always|withText" />

</menu>
  • menu:選單項目的容器,其下可包含多的 item

  • item:MenuItem ,代表選單中的單一項目,以下為幾個基本性質:

    • android:id="" :選單項目獨有的 id ,可用來識別使用者點擊的項目為何

    • android:icon="" :設定選單項目的圖示

    • android:title="" :設置選單項目的標題名稱

    • app:showAsAction="" :選單項目的顯示方式,有下列幾種:

      • always:無論如何都將選單項目顯示在標題欄中

      • never:標題欄中會有一個三圓點圖示按鈕,選單項目將顯示在點擊三圓點按鈕後彈出的選單中

      • ifRoom:在標題欄空間許可的狀況下會顯示在標題欄,過多的項目將顯示在三圓點的選單中

      • withText:預設情況在標題欄中項目若有 icon 會顯示 icon,若無 icon 會顯示 title ,
        若有 icon 且設置 withText 則會在標題欄空間許可情況下盡量同時顯示 icon 和 title。

      #三圓點的選單中,項目將只顯示 title
       若要同時顯示 icon 將需另外從 res/values/styles.xml 中設置

      • collapseActionView:項目被摺疊到一個按鈕中,點選時才被展開。
        一般要配合 ifRoom 使用才有效果。

Method

  • OnClickListener

    設定點擊事件

    button.setOnClickListener {
        a = a+1
        textView.setText(a.toString())
    }
    
  • override fun onCreateOptionsMenu 

    初始化標題欄的方法,透過 inflate 方法載入自定義的 menu
    ( inflate 方法將在之後的文章中介紹 )

    override fun onCreateOptionsMenu(menu: Menu?): Boolean {
        super.onCreateOptionsMenu(menu)
        menuInflater.inflate(R.menu.menu_main, menu)
        return true
    }
    
  • override fun onOptionsItemSelected

    當標題欄被使用者選擇時會呼叫此方法,因此在此方法中設定自定義 MenuItem 的事件

    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        if (item.itemId == R.id.reset) {
            a = 0
            textView.setText(a.toString())
            }
        return true
    }
    

實作成果

查看詳細 Code > GitHub


下一篇
Android Kotlin 實作 Day 2 : Discount ( 使用 Seekbar + Keyboard )
系列文
英國研究顯示,連續30天用Kotlin開發Android將有益於身心健康30

尚未有邦友留言

立即登入留言