Codelab ini adalah bagian dari kursus Dasar-Dasar Android Kotlin. Anda akan mendapatkan manfaat maksimal dari kursus ini jika menyelesaikan codelab secara berurutan. Semua codelab kursus tercantum di halaman landing codelab Dasar-Dasar Android Kotlin.
Yang harus sudah Anda ketahui
- Membuat aplikasi Android dasar di Kotlin.
- Menjalankan aplikasi Android di emulator atau di perangkat.
- Membuat tata letak linier menggunakan Layout Editor Android Studio .
- Membuat aplikasi sederhana yang menggunakan
LinearLayout,TextView,ScrollView, dan tombol dengan pengendali klik.
Yang akan Anda pelajari
- Cara mendapatkan input pengguna menggunakan tampilan
EditText. - Cara menyetel teks ke tampilan
TextViewmenggunakan teks dari tampilanEditText. - Cara menggunakan
ViewdanViewGroup. - Cara mengubah visibilitas
View.
Yang akan Anda lakukan
- Tambahkan interaktivitas ke aplikasi AboutMe, yang berasal dari codelab sebelumnya.
- Tambahkan
EditTextagar pengguna dapat memasukkan teks. - Tambahkan
Buttondan terapkan pengendali kliknya.
Dalam codelab ini, Anda akan memperluas aplikasi AboutMe untuk menambahkan interaksi pengguna. Anda menambahkan kolom nama panggilan, tombol SELESAI, dan tampilan teks untuk menampilkan nama panggilan. Setelah pengguna memasukkan nama panggilan dan mengetuk tombol SELESAI, tampilan teks akan diperbarui untuk menampilkan nama panggilan yang dimasukkan. Pengguna dapat memperbarui nama panggilan lagi dengan mengetuk tampilan teks.
|
|
Dalam tugas ini, Anda akan menambahkan kolom input EditText untuk memungkinkan pengguna memasukkan nama panggilan.
Langkah 1: Mulai
- Jika Anda belum memiliki aplikasi AboutMe dari codelab sebelumnya, download kode awal, AboutMeInteractive-Starter. Ini adalah kode yang sama yang Anda selesaikan di codelab sebelumnya.
- Buka project AboutMeInteractive-Starter di Android Studio.
- Jalankan aplikasi. Anda akan melihat tampilan teks nama, gambar bintang, dan segmen teks panjang dalam tampilan scroll.

Perhatikan bahwa pengguna tidak dapat mengubah teks apa pun.
Aplikasi akan lebih menarik jika pengguna dapat berinteraksi dengan aplikasi, misalnya jika pengguna dapat memasukkan teks. Untuk menerima input teks, Android menyediakan widget antarmuka pengguna (UI) yang disebut edit teks. Anda menentukan edit teks menggunakan EditText, subclass dari TextView. Kolom edit teks memungkinkan pengguna memasukkan dan mengubah input teks, seperti yang ditunjukkan pada screenshot di bawah.

Langkah 2: Tambahkan EditText
- Di Android Studio, buka file tata letak
activity_main.xmldi tab Design. - Di panel Palette, klik Text.

Ab TextView, yang merupakanTextView, ditampilkan di bagian atas daftar elemen teks di panel Palette. Di bawah Ab TextView terdapat beberapa tampilanEditText.
Di panel Palette, perhatikan bagaimana ikon untukTextViewmenampilkan huruf Ab tanpa garis bawah. Namun, ikonEditTextmenampilkan Ab dengan garis bawah. Garis bawah menunjukkan bahwa tampilan dapat diedit.
Untuk setiap tampilanEditText, Android menetapkan atribut yang berbeda, dan sistem menampilkan metode input virtual yang sesuai (seperti keyboard virtual). - Tarik teks edit PlainText ke Component Tree dan letakkan di bawah
name_textdan di atasstar_image.
- Gunakan panel Atribut untuk menyetel atribut berikut pada tampilan
EditText.
Atribut | Nilai |
|
|
|
|
|
|
- Jalankan aplikasi Anda. Di atas gambar bintang, Anda akan melihat kotak edit teks dengan teks default "Nama".

Dalam tugas ini, Anda akan menata tampilan EditText dengan menambahkan petunjuk, mengubah perataan teks, mengubah gaya ke NameStyle, dan menyetel jenis input.
Langkah 1: Tambahkan teks petunjuk
- Tambahkan resource string baru untuk petunjuk di file
string.xml.
<string name="what_is_your_nickname">What is your Nickname?</string>- Gunakan panel Attributes untuk menetapkan atribut berikut ke tampilan
EditText:
Atribut | Nilai |
|
|
|
|
|
|
- Di panel Atribut, hapus nilai
Namedari atributtext. Nilai atributtextharus kosong agar petunjuk ditampilkan.
Langkah 2: Tetapkan atribut inputType
Atribut inputType menentukan jenis input yang dapat dimasukkan pengguna dalam tampilan EditText. Sistem Android menampilkan kolom input dan keyboard virtual yang sesuai, bergantung pada jenis input yang ditetapkan.
Untuk melihat semua kemungkinan jenis input, di panel Attributes, klik kolom inputType, atau klik tiga titik ... di samping kolom. Daftar akan terbuka dan menampilkan semua jenis input yang dapat Anda gunakan, dengan jenis input yang saat ini aktif dicentang. Anda dapat memilih lebih dari satu jenis input.

Misalnya, untuk sandi, gunakan nilai textPassword. Kolom teks menyembunyikan input pengguna.

Untuk nomor telepon, gunakan nilai phone. Keypad angka ditampilkan, dan pengguna hanya dapat memasukkan angka.

Tetapkan jenis input untuk kolom nama panggilan:
- Tetapkan atribut
inputTypeketextPersonNameuntuknickname_editedit teks. - Di panel Component Tree, perhatikan peringatan
autoFillHints. Peringatan ini tidak berlaku untuk aplikasi ini dan berada di luar cakupan codelab ini, jadi Anda dapat mengabaikannya. (Jika Anda ingin mempelajari lebih lanjut isi otomatis, lihat Mengoptimalkan aplikasi Anda untuk isi otomatis.)
- Di panel Attributes , verifikasi nilai untuk atribut berikut dari tampilan
EditText:
Atribut | Nilai |
|
|
|
|
|
|
|
|
|
|
|
|
| (kosong) |
Button adalah elemen UI yang dapat diketuk pengguna untuk melakukan suatu tindakan. Tombol dapat terdiri dari teks, ikon, atau teks dan ikon.

Dalam tugas ini, Anda akan menambahkan tombol SELESAI, yang diketuk pengguna setelah mereka memasukkan nama panggilan. Tombol menukar tampilan EditText dengan tampilan TextView yang menampilkan nama panggilan. Untuk memperbarui nama panggilan, pengguna dapat mengetuk tampilan TextView.
Langkah 1: Tambahkan tombol SELESAI
- Tarik tombol dari panel Palette ke Component Tree. Tempatkan tombol di bawah teks edit
nickname_edit.

- Buat resource string baru bernama
done. Beri string nilaiDone,
<string name="done">Done</string>- Gunakan panel Atribut untuk menetapkan atribut berikut pada tampilan
Buttonyang baru ditambahkan:
Atribut | Nilai |
|
|
|
|
|
|
|
|
Atribut layout_gravity memusatkan tampilan di tata letak induknya, LinearLayout.
- Ubah gaya menjadi
Widget.AppCompat.Button.Colored, yang merupakan salah satu gaya standar yang disediakan Android. Anda dapat memilih gaya dari drop-down atau dari jendela Resources.
Gaya ini mengubah warna tombol menjadi warna aksen,colorAccent. Warna aksen ditentukan dalam fileres/values/colors.xml.
File colors.xml berisi warna default untuk aplikasi Anda. Anda dapat menambahkan resource warna baru atau mengubah resource warna yang ada di project, berdasarkan persyaratan aplikasi Anda.
Contoh file colors.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#008577</color>
<color name="colorPrimaryDark">#00574B</color>
<color name="colorAccent">#D81B60</color>
</resources>Langkah 2: Beri gaya pada tombol SELESAI
- Di panel Attributes, tambahkan margin atas dengan memilih Layout_Margin > Top. Tetapkan margin atas ke
layout_margin, yang ditentukan dalam filedimens.xml.
- Tetapkan atribut
fontFamilykerobotodari menu drop-down.
- Beralihlah ke tab Text dan verifikasi kode XML yang dihasilkan untuk tombol yang baru ditambahkan.
<Button
android:id="@+id/done_button"
style="@style/Widget.AppCompat.Button.Colored"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="@dimen/layout_margin"
android:fontFamily="@font/roboto"
android:text="@string/done" />Langkah 3: Ubah resource warna
Pada langkah ini, Anda mengubah warna aksen tombol agar sesuai dengan panel aplikasi aktivitas Anda.
- Buka
res/values/colors.xmldan ubah nilaicolorAccentmenjadi#76bf5e.
<color name="colorAccent">#76bf5e</color>Anda dapat melihat warna yang sesuai dengan kode HEX, di margin kiri editor file.

Perhatikan perubahan warna tombol di editor desain.
- Jalankan aplikasi Anda. Anda akan melihat tombol SELESAI yang diberi gaya di bawah teks edit.

Setelah pengguna memasukkan nama panggilan dan mengetuk tombol SELESAI, nama panggilan akan ditampilkan dalam tampilan TextView. Dalam tugas ini, Anda akan menambahkan tampilan teks dengan latar belakang berwarna. Tampilan teks menampilkan nama panggilan pengguna di atas star_image.
Langkah 1: Tambahkan TextView untuk nama panggilan
- Tarik tampilan teks dari panel Palette ke Component Tree. Tempatkan tampilan teks di bawah
done_buttondan di atasstar_image.
- Gunakan panel Atribut untuk menetapkan atribut berikut untuk tampilan
TextViewbaru:
Atribut | Nilai |
|
|
|
|
|
|
Langkah 2: Ubah visibilitas TextView
Anda dapat menampilkan atau menyembunyikan tampilan di aplikasi menggunakan atribut visibility. Atribut ini menggunakan salah satu dari tiga nilai:
visible: Tampilan terlihat.Invisible: Menyembunyikan tampilan, tetapi tampilan masih menempati ruang dalam tata letak.gone: Menyembunyikan tampilan, dan tampilan tidak menempati ruang apa pun dalam tata letak.
- Di panel Attributes, tetapkan
visibilitytampilan teksnickname_textkegone, karena Anda tidak ingin aplikasi menampilkan tampilan teks ini pada awalnya.
Perhatikan bahwa saat Anda mengubah atribut di panel Attributes, tampilannickname_textakan menghilang dari editor desain. Tampilan disembunyikan di pratinjau tata letak. - Ubah nilai atribut
textdari tampilannickname_textmenjadi string kosong.
Kode XML yang dihasilkan untuk TextView ini akan terlihat mirip dengan kode berikut:
<TextView
android:id="@+id/nickname_text"
style="@style/NameStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAlignment="center"
android:visibility="gone"
android:text="" />Pratinjau tata letak Anda akan terlihat seperti berikut:

Pengendali klik pada objek Button (atau pada tampilan apa pun) menentukan tindakan yang akan dilakukan saat tombol (tampilan) diketuk. Fungsi yang menangani peristiwa klik harus diimplementasikan di Activity yang menghosting tata letak dengan tombol (tampilan).
Pemroses klik umumnya memiliki format ini, dengan tampilan yang diteruskan adalah tampilan yang menerima klik atau ketukan.
private fun clickHandlerFunction(viewThatIsClicked: View) {
// Add code to perform the button click event
}Anda dapat melampirkan fungsi pemroses klik ke peristiwa klik tombol dengan dua cara:
- Dalam tata letak XML, Anda dapat menambahkan atribut
android:onClickke elemen<Button>. Contoh:
<Button
android:id="@+id/done_button"
android:text="@string/done"
...
android:onClick="clickHandlerFunction"/>ATAU
- Anda dapat melakukannya secara terprogram saat runtime, di
onCreate()Activity, dengan memanggilsetOnClickListener. Contoh:
myButton.setOnClickListener {
clickHanderFunction(it)
}Dalam tugas ini, Anda akan menambahkan pemroses klik untuk done_button secara terprogram. Anda menambahkan pemroses klik di aktivitas yang sesuai, yaitu MainActivity.kt.
Fungsi pemroses klik Anda, yang disebut addNickname, akan melakukan hal berikut:
- Dapatkan teks dari
nickname_editedit teks. - Tetapkan teks di tampilan teks
nickname_text. - Menyembunyikan teks edit dan tombol.
- Tampilkan nama panggilan
TextView.
Langkah 1: Tambahkan pemroses klik
- Di Android Studio, di folder
java, buka fileMainActivity.kt. - Di
MainActivity.kt, di dalam classMainActivity, tambahkan fungsi bernamaaddNickname. Sertakan parameter input bernamaviewdari jenisView. ParameterviewadalahViewtempat fungsi dipanggil. Dalam hal ini,viewakan menjadi instance tombol SELESAI Anda.
private fun addNickname(view: View) {
}- Di dalam fungsi
addNickname, gunakanfindViewById()untuk mendapatkan referensi ke teks editnickname_editdan tampilan teksnickname_text.
val editText = findViewById<EditText>(R.id.nickname_edit)
val nicknameTextView = findViewById<TextView>(R.id.nickname_text)- Setel teks di tampilan teks
nicknameTextViewke teks yang dimasukkan pengguna dieditText, dengan mengambilnya dari propertitext.
nicknameTextView.text = editText.text- Sembunyikan tampilan
EditTextnama panggilan dengan menetapkan propertivisibilitydarieditTextkeView.GONE.
Pada tugas sebelumnya, Anda mengubah properti visibility menggunakan Layout Editor. Di sini, Anda melakukan hal yang sama secara terprogram.
editText.visibility = View.GONE- Sembunyikan tombol SELESAI dengan menyetel properti
visibilitykeView.GONE. Anda sudah memiliki referensi tombol sebagai parameter input fungsi,view.
view.visibility = View.GONE- Di akhir fungsi
addNickname, buat tampilan nama panggilanTextViewterlihat dengan menyetel propertivisibilitykeView.VISIBLE.
nicknameTextView.visibility = View.VISIBLELangkah 2: Lampirkan pemroses klik ke Tombol SELESAI
Setelah memiliki fungsi yang menentukan tindakan yang akan dilakukan saat tombol SELESAI diketuk, Anda harus melampirkan fungsi tersebut ke tampilan Button.
- Di
MainActivity.kt, di akhir fungsionCreate(), dapatkan referensi ke tampilan SELESAIButton. Gunakan fungsifindViewById()dan panggilsetOnClickListener. Teruskan referensi ke fungsi pemroses klik,addNickname().
findViewById<Button>(R.id.done_button).setOnClickListener {
addNickname(it)
}Dalam kode di atas, it merujuk ke done_button, yang merupakan tampilan yang diteruskan sebagai argumen.
- Jalankan aplikasi Anda, masukkan nama panggilan, lalu ketuk tombol SELESAI. Perhatikan bagaimana edit teks dan tombol diganti dengan tampilan teks nama panggilan.
|
|
Perhatikan bahwa meskipun setelah pengguna mengetuk tombol SELESAI, keyboard masih terlihat. Perilaku ini adalah default.
Langkah 3: Sembunyikan keyboard
Pada langkah ini, Anda akan menambahkan kode untuk menyembunyikan keyboard setelah pengguna mengetuk tombol SELESAI.
- Di
MainActivity.kt, di akhir fungsiaddNickname(), tambahkan kode berikut. Jika Anda ingin mengetahui informasi selengkapnya tentang cara kerja kode ini, lihat dokumentasihideSoftInputFromWindow.
// Hide the keyboard.
val inputMethodManager = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
inputMethodManager.hideSoftInputFromWindow(view.windowToken, 0)- Jalankan aplikasi Anda lagi. Perhatikan bahwa setelah Anda mengetuk SELESAI, keyboard akan disembunyikan.
|
|
Pengguna tidak dapat mengubah nama panggilan setelah mengetuk tombol SELESAI. Pada tugas berikutnya, Anda akan membuat aplikasi lebih interaktif dan menambahkan fungsi sehingga pengguna dapat memperbarui nama panggilan.
Dalam tugas ini, Anda akan menambahkan pemroses klik ke tampilan teks nama panggilan. Pemroses klik menyembunyikan tampilan teks nama panggilan, menampilkan teks edit, dan menampilkan tombol SELESAI.
Langkah 1: Tambahkan pemroses klik
- Di
MainActivity, tambahkan fungsi pemroses klik bernamaupdateNickname(view: View)untuk tampilan teks nama panggilan.
private fun updateNickname (view: View) {
}- Di dalam fungsi
updateNickname, dapatkan referensi ke teks editnickname_edit, dan dapatkan referensi ke tombol SELESAI . Untuk melakukannya, gunakan metodefindViewById().
val editText = findViewById<EditText>(R.id.nickname_edit)
val doneButton = findViewById<Button>(R.id.done_button)- Di akhir fungsi
updateNickname, tambahkan kode untuk menampilkan kolom edit teks, menampilkan tombol SELESAI, dan menyembunyikan tampilan teks.
editText.visibility = View.VISIBLE
doneButton.visibility = View.VISIBLE
view.visibility = View.GONE- Di
MainActivity.kt, di akhir fungsionCreate(), panggilsetOnClickListenerpada tampilan teksnickname_text. Teruskan referensi ke fungsi pemroses klik, yaituupdateNickname().
findViewById<TextView>(R.id.nickname_text).setOnClickListener {
updateNickname(it)
}- Jalankan aplikasi Anda. Masukkan nama panggilan, ketuk tombol SELESAI, lalu ketuk tampilan
TextViewnama panggilan. Tampilan nama panggilan akan menghilang, dan teks edit serta tombol SELESAI akan terlihat.
Perhatikan bahwa secara default, tampilan EditText tidak memiliki fokus dan keyboard tidak terlihat. Pengguna akan kesulitan mengetahui bahwa tampilan teks nama panggilan dapat diklik. Pada tugas berikutnya, Anda akan menambahkan fokus dan gaya ke tampilan teks nama panggilan.
Langkah 2: Tetapkan fokus ke tampilan EditText dan tampilkan keyboard
- Di akhir fungsi
updateNickname, tetapkan fokus ke tampilanEditText. Gunakan metoderequestFocus().
// Set the focus to the edit text.
editText.requestFocus()- Di akhir fungsi
updateNickname, tambahkan kode untuk membuat keyboard terlihat.
// Show the keyboard.
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.showSoftInput(editText, 0)Langkah 3: Tambahkan warna latar ke tampilan TextView nama panggilan
- Setel warna latar belakang tampilan teks
nickname_textke@color/colorAccent, dan tambahkan padding bawah@dimen/small_padding. Perubahan ini akan berfungsi sebagai petunjuk bagi pengguna bahwa tampilan teks nama panggilan dapat diklik.
android:background="@color/colorAccent"
android:paddingBottom="@dimen/small_padding"- Jalankan aplikasi akhir Anda. Teks edit memiliki fokus, nama panggilan ditampilkan di teks edit, dan tampilan teks nama panggilan diberi gaya.
|
|
Sekarang, tunjukkan aplikasi AboutMe interaktif Anda kepada teman.
Project Android Studio: AboutMeInteractive
- Alat Layout Editor di Android Studio adalah editor desain visual. Anda dapat menggunakan Layout Editor untuk membuat tata letak aplikasi dengan menarik elemen UI ke dalam tata letak.
EditTextadalah elemen UI yang memungkinkan pengguna memasukkan dan mengubah teks.Buttonadalah elemen UI yang dapat diketuk pengguna untuk melakukan suatu tindakan. Tombol dapat terdiri dari teks, ikon, atau teks dan ikon.
Pemroses klik
- Anda dapat membuat
Viewmerespons ketukan dengan menambahkan pemroses klik keViewtersebut. - Fungsi yang menentukan pemroses klik menerima
Viewyang diklik.
Anda dapat melampirkan fungsi pemroses klik ke View dengan salah satu dari dua cara:
- Dalam tata letak XML, tambahkan atribut
android:onClickke elemen<View>. - Secara terprogram, gunakan fungsi
setOnClickListener(View.OnClickListener)diActivityyang sesuai.
Kursus Udacity:
Dokumentasi developer Android:
Bagian ini mencantumkan kemungkinan tugas pekerjaan rumah untuk siswa yang mengerjakan codelab ini sebagai bagian dari kursus yang dipimpin oleh instruktur. Instruktur menentukan hal berikut:
- Memberikan pekerjaan rumah jika diperlukan.
- Memberi tahu siswa cara mengirimkan tugas pekerjaan rumah.
- Memberi nilai tugas pekerjaan rumah.
Instruktur bisa menggunakan saran ini sesuai kebutuhan, dan bebas menugaskan pekerjaan rumah lain yang dirasa cocok.
Jika Anda menyelesaikan codelab ini sendiri, gunakan tugas pekerjaan rumah ini untuk menguji pengetahuan Anda.
Jawab pertanyaan-pertanyaan berikut
Pertanyaan 1
EditText merupakan subclass dari?
ViewLinearLayoutTextViewButton
Pertanyaan 2
Manakah dari nilai atribut visibility berikut, yang jika disetel pada tampilan, akan membuat tampilan tersembunyi dan tidak memakan ruang dalam tata letak?
visibleInvisiblegonehide
Pertanyaan 3
Untuk tampilan EditText, sebaiknya jangan berikan petunjuk, karena petunjuk akan mengacaukan kolom input. Benar atau salah?
- Benar
- Salah
Pertanyaan 4
Manakah dari pernyataan berikut ini yang benar tentang tampilan Button?
- Tampilan
Buttonadalah grup tampilan. - Anda hanya dapat memiliki tiga tampilan
Buttonper layar. - Tampilan
Buttondapat diklik dan, saat diklik, pemroses klik yang terpasang akan melakukan suatu tindakan. Buttonadalah perluasan dariImageView.
Mulai pelajaran berikutnya:
Untuk link ke codelab lain dalam kursus ini, lihat halaman landing codelab Dasar-Dasar Android Kotlin.


(tengah)
(tengah)

