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
TextView
menggunakan teks dari tampilanEditText
. - Cara menggunakan
View
danViewGroup
. - Cara mengubah visibilitas
View
.
Yang akan Anda lakukan
- Tambahkan interaktivitas ke aplikasi AboutMe, yang berasal dari codelab sebelumnya.
- Tambahkan
EditText
agar pengguna dapat memasukkan teks. - Tambahkan
Button
dan 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.xml
di 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 untukTextView
menampilkan huruf Ab tanpa garis bawah. Namun, ikonEditText
menampilkan 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_text
dan 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
Name
dari atributtext
. Nilai atributtext
harus 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
inputType
ketextPersonName
untuknickname_edit
edit 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
Button
yang 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
fontFamily
keroboto
dari 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.xml
dan ubah nilaicolorAccent
menjadi#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_button
dan di atasstar_image
. - Gunakan panel Atribut untuk menetapkan atribut berikut untuk tampilan
TextView
baru:
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
visibility
tampilan teksnickname_text
kegone
, karena Anda tidak ingin aplikasi menampilkan tampilan teks ini pada awalnya.
Perhatikan bahwa saat Anda mengubah atribut di panel Attributes, tampilannickname_text
akan menghilang dari editor desain. Tampilan disembunyikan di pratinjau tata letak. - Ubah nilai atribut
text
dari tampilannickname_text
menjadi 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:onClick
ke 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_edit
edit 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 bernamaview
dari jenisView
. Parameterview
adalahView
tempat fungsi dipanggil. Dalam hal ini,view
akan menjadi instance tombol SELESAI Anda.
private fun addNickname(view: View) {
}
- Di dalam fungsi
addNickname
, gunakanfindViewById()
untuk mendapatkan referensi ke teks editnickname_edit
dan tampilan teksnickname_text
.
val editText = findViewById<EditText>(R.id.nickname_edit)
val nicknameTextView = findViewById<TextView>(R.id.nickname_text)
- Setel teks di tampilan teks
nicknameTextView
ke teks yang dimasukkan pengguna dieditText
, dengan mengambilnya dari propertitext
.
nicknameTextView.text = editText.text
- Sembunyikan tampilan
EditText
nama panggilan dengan menetapkan propertivisibility
darieditText
keView.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
visibility
keView.GONE
. Anda sudah memiliki referensi tombol sebagai parameter input fungsi,view
.
view.visibility = View.GONE
- Di akhir fungsi
addNickname
, buat tampilan nama panggilanTextView
terlihat dengan menyetel propertivisibility
keView.VISIBLE
.
nicknameTextView.visibility = View.VISIBLE
Langkah 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()
, panggilsetOnClickListener
pada 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
TextView
nama 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_text
ke@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.
EditText
adalah elemen UI yang memungkinkan pengguna memasukkan dan mengubah teks.Button
adalah 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
View
merespons ketukan dengan menambahkan pemroses klik keView
tersebut. - Fungsi yang menentukan pemroses klik menerima
View
yang diklik.
Anda dapat melampirkan fungsi pemroses klik ke View
dengan salah satu dari dua cara:
- Dalam tata letak XML, tambahkan atribut
android:onClick
ke elemen<
View
>
. - Secara terprogram, gunakan fungsi
setOnClickListener(View.OnClickListener)
diActivity
yang 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?
View
LinearLayout
TextView
Button
Pertanyaan 2
Manakah dari nilai atribut visibility
berikut, yang jika disetel pada tampilan, akan membuat tampilan tersembunyi dan tidak memakan ruang dalam tata letak?
visible
Invisible
gone
hide
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
Button
adalah grup tampilan. - Anda hanya dapat memiliki tiga tampilan
Button
per layar. - Tampilan
Button
dapat diklik dan, saat diklik, pemroses klik yang terpasang akan melakukan suatu tindakan. Button
adalah perluasan dariImageView
.
Mulai pelajaran berikutnya:
Untuk link ke codelab lain dalam kursus ini, lihat halaman landing codelab Dasar-Dasar Android Kotlin.