iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 11
0
Mobile Development

iOS Developer Learning Android系列 第 11

iOS Developer Learning Android. Lesson 11 - Button + Dialog (感受一下使用原生鏈式編程彈出Alert吧)

  • 分享至 

  • xImage
  •  

今天主要的重點會著重在Dialog

對照表☘️☘️☘️

Android iOS
Button UIButton
Dialog UIAlertController

常用屬性與一些說明

  1. Button
    1. 竟然繼承TextView...⚠️⚠️⚠️
      看來是只要可以顯示文字的都會繼承TextView
    2. Android有點奇怪= =, 預設按鈕都是大寫字母⚠️⚠️⚠️, 要有小寫必須textAllCaps="false"
    3. enabled//是否啟用
    4. onClick//點了call哪個function
  2. Dialog
    1. 使用AlertDialog.Builder建立
    2. 可以一路setTitle.setMessage點下去,滿方便的~
    3. 最多只可以三個按鈕,一種一個,分別是:
      1. 正向setPositiveButton
      2. 負向setNegativeButton
      3. 中性setNeutralButton
    4. 有以下幾種類型:
      1. 基本
      2. 清單使用setItems加入選項
      3. 單選使用setSingleChoiceItems加入選項
      4. 多選使用setMultiChoiceItems加入選項
      5. 自定使用setView加入欄位
    5. 清單/單選/多選都不能setMessage
    6. ⚠️⚠️⚠️雖然就算Dialog只有一個按鈕,但還是可以點灰色背景取消掉,不像iOS一定要按
    7. ⚠️⚠️⚠️如果是要做到輸入框,就要自己拉畫面檔,有點麻煩,但相對也比較彈性
      1. 用LayoutInflater類別的inflate方法就可以把XML檔轉成view

同場加映

Toast
⚠️⚠️⚠️原生就有提供畫面提示的類別,叫Toast(是長得像吐司嗎?),一行Toast.makeText(this,"登入成功", Toast.LENGTH_LONG).show()就可搞定通知user這件事,讚讚❤️

來點代碼

以前的UIAlertView是用Delegate
後來改UIAlertController用Block/Closure
而Android的Dialog除了採用Closure以外(我不知道在Android叫什麼)
還可以利用Builder做鏈式寫法⚠️⚠️⚠️
一路點下去就是爽~

        Dialog dialog = new AlertDialog.Builder(this)

            .setTitle("請問!")
            .setMessage("現在是白天還是晚上?")
            .setPositiveButton("白天", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    Toast.makeText(Lesson06Activity.this,"您選擇的是白天",Toast.LENGTH_LONG).show();
                }
            })
            .setNegativeButton("晚上", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    Toast.makeText(Lesson06Activity.this,"您選擇的是晚上",Toast.LENGTH_LONG).show();
                }
            })
            .setNeutralButton("我不知道", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    Toast.makeText(Lesson06Activity.this,"那麼我明天再問您一次",Toast.LENGTH_LONG).show();
                }
            }).create();

        dialog.show();

可以看到上面的code,只有請AlertDialog.Builder生一次dialog
就可以.setTitle.setPositiveButton.create.......點下去了
只可惜不了解為什麼不能.create後面接.show?

繼承關係

  1. Button
    java.lang.Object
    ↳ android.view.View
    ↳ android.widget.TextView
    ↳ android.widget.Button
  2. Dialog
    java.lang.Object
    ↳ android.app.Dialog

參考資料

今天的範例程式

可以去 https://github.com/mark33699/IDLA 看一下順便給顆⭐️


如果你喜歡我的影片別忘了按讚分享加訂閱,開啟紅色的小鈴鐺,我們明天見~


上一篇
iOS Developer Learning Android. Lesson 10 - TextView + EditText (不用寫code就可做到跑馬燈跟UITextView自動長高)
下一篇
iOS Developer Learning Android. Lesson 12 - ImageView + ImagePicker (想知道如何把歪掉的照片調正嗎?)
系列文
iOS Developer Learning Android30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言