Dalam kesempatan kali ini, kita akan belajar tentang Layouting atau tata letak pada Android Studio yang dimana Layout menjadi UI pada tampilan Android kita.
Membuat Project Baru
Buat terlebih dahulu project Android Studio dengan nama yang Anda inginkan.
Jika ketika Anda membuka Android Studio dan menampilkan halaman utama Android Studio, klik saja Start a new Android Studio Project.
Pada halaman Create New Project, pada Tab Phone and Tablet, pilih Empty Activity. Klik Next.
Pada halaman selanjutnya, buat parameternya seperti dibawah ini. Lalu klik Finish
Attribute Value Name TentangSaya Package name com.anbidev.tentangsaya Save Location C:\Users${pcname}\AndroidStudioProjects\TentangSaya Language Kotlin Minimum SDK API 21: Android 5.0 (Lollipop) Tunggu hingga Android Studio selesai membuat file untuk project siap digunakan
Coba jalankan Aplikasi Anda, maka Anda akan melihat String “Hello World” pada tampilan
Jika kalian tidak suka tampilan Dark Mode yang disediakan oleh Android Studio, kalian bisa menonaktifkannya melalui
res/values/themes/themes.xml
lalu ubah parent dari style menjadiTheme.MaterialComponents.Light.DarkActionBar
. Begitu jugathemes.xml (night)
.
Yang berarti dimana Empty Activity template membuat single Empty Activity, MainActivity.kt
. Template tersebut juga membuat layout file bernama activity_main.xml
. Layout tersebut memiliki ConstraintLayout
yang menjadi root pada sebuah ViewGroup
, dan memiliki satu TextView
sebagai content didalamnya.
Merubah Root Layout menjadi LinearLayout
View Groups
ViewGroup
adalah view yang dapat memiliki child views, seperti views dan view groups.
Pada LinearLayout
view group, element UI dapat di ubah menjadi Horizontal maupun Vertical.
Mari kita ubah root layout yang dimana kita akan menggunakan LinearLayout
view group:
- Pada panel Project -> Android. didalam
app/res/layout
folder, buka fileactivity_main.xml
. - Pilih Text atau Code tab dan ubah root view group dari
ContraintLayout
menjadiLinearLayout
. - Singkirkan
TextView
dan pada elementLinearLayout
tambahkan attributeandroid:orientation
dan beri nilaivertical
.
Sebelum
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
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"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
Sesudah
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
</LinearLayout>
Menambahkan TextView dengan Layout Editor
Layout Editor adalah tool visual-design yang tersedia oleh Android Studio. Daripada menulis code XML, Anda bisa menggunakan Layout Editor dengan drag element UI kedalam design editor.
Untuk melihat Layout Editor, click tab Design. Lihat contoh dibawah
- Design Editor : Menampilkan halaman visual dari layout Anda.
- Toolbar : Menyediakan alat untuk mengedit tampilan pada design editor dan mengubah beberapa attribute layout. Sebagai contoh, coba tekan drop-down menu Select Design Surface
- Design untuk melihat langsung tampilan dari layout yang Anda buat.
- Blueprint untuk melihat hanya outline dari masing-masing view.
- Design + Blueprint untuk melihat keduanya.
- Palette : Menyediakan list dari views dan juga view groups yang dapat anda drag ke layout Anda atau ke Component Tree.
- Attributes : Menampilkan attributes yang saat ini berada di sebuah view atau view group.
- Component Tress : Menampilkan hirarki dari layout views sebagai tress. Component Tree sangat bermanfaat ketika Anda memiliki view yang kecil, tersembunyi/hidden, atau bahkan overlapping sehingga views tidak dapat ditampilkan pada design editor.
Menambahkan TextView
Buka file
res/layout/activity_main.xml
.Pindah ke tab Code
dan coba amati code tersebut.
activity_main.xml
memilikiLinearLayout
sebagai root view group.LinearLayout
memiliki attributes utama yang harus diisi, yaitulayout_height
,layout_weight
,orientation
, yang dimana orientation akan ter set secara default divertical
.Pindah ke tab Design.
Note : Tab Design dan tab Code menampilkan layout yang sama, hanya saja dengan cara yang berbeda.
Drag
TextView
dari panel Palette ke design editor.Coba perhatikan Component Tree.
TextView
berada di child element dari parent view groupLinearLayout
.Buka panel Attributes, dan buat attributes
TextView
menjadi seperti dibawahAttribute Value ID name_text text Tulis nama Anda textAppearance > textSize 20sp textAppearance > textColor @android:color/bacl textAppearance > textAlignment Center
Membuat string resource
Pada Component Tree, setelah TextView
Anda akan melihat warning icon berupa segitiga kuning. Untuk melihat lebih detail, click icon tersebut atau hanya drag pointer ke icon warning, seperti contoh dibawah.
Untuk mengatasi masalah seperti di atas, buatlah string resource:
Click warning icon pada Component Tree, lalu akan ada tulisan Suggested Fix dan click saja tombol Fix.
Setelah itu akan keluar halaman Extract Resource. Silahkan isi parameter sesuai dengan yang Anda inginkan.
Lalu coba buka file
res/values/string.xml
maka akan terbuat string baru dengan nama yang barusan Anda berikan.<string name="welcome_to_anbidev">Welcome to AnbiDev</string>
Menambahkan dimension resource
Pada tab
activity_main.xml
, pindah ke pilihancode
.Lalu pada attributes
textSize
pada viewTextView
, click pada angka 20 (sesuai dengan size yang Anda berikan tadi) lalu clickalt
+enter
(Option
+Enter
pada Mac) -> Extrack dimension resource maka akan keluar halaman Extract Resource.Pada Extract Resource, beri attribute Resource name berupa
text_size
, lalu click OK.Maka pada
res/values
akan terbuat file baru berupadimens.xml
. Maka kalian akan melihat hasil dari extract resourcetext_size
.<dimen name="text_size">20sp</dimen>
Merubah tampilan dari TextView
Ketika Anda melihat tampilan Layout, maka TextView
berada di pojok atas. Sekarang, mari kita tambahkan margin dan juga padding.
Padding? Margin?
Padding adalah space di dalam dari sebuah view. Sebagai contoh bisa lihat dibawah ini.
Contoh attributes dari Padding:
android:padding
menambahkan padding ke semua sisi.android:paddingLeft
menambahkan padding ke sisi kiri.android:paddingRight
menambahkan padding ke sisi kanan.android:paddingTop
menambahkan padding ke sisi atas.android:paddingStart
menambahkan padding ke sisi awal sebuah view.android:paddingEnd
menambahkan padding ke sisi akhir sebuah view.
Sedangkan Margin menambahkan space di luar sisi view. Untuk contoh attributes sama dengan Padding, hanya saja berbeda sedikit seperti android:layout_marginEnd
.
IMPORTANT!
Right/Left or Start/End?
Right dan Left selalu menunjukkan sisi kanan dan kiri dari sebuah screen, apakah aplikasi yang anda buat menggunakan left-to-right (LTR) flow atau right-to-left (RTL) flow. Start dan End selalu melihatnya sebagai awal dan akhir dari flow.
- Untuk LTR flow, start = kiri dan end = kanan.
- Untuk RTL flow, start = kanan dan end = kiri.
Jika aplikasi anda memiliki target API 17 (Android 4.2) atau lebih tinggi:
- Gunakan Start dan End daripada Left dan Right.
- Sebagai contoh,
android:layout_marginLeft
harus menjadiandroid:layout_marginStart
untuk mensupport RTL.Jika Anda menginginkan aplikasi Anda bekerja pada versi yang lebih rendah dari 4.2 atau
targetSdkVersion
atauminSdkVersion
adalah 16 atau mungkin lebih rendah, gunakan:
- Tambahkan Start dan End sebagai tambahan dari Left dan Right
- Sebagai contoh, gunakan
android:paddingLeft
dan jugaandroid:paddingStart
.
Menambahkan Padding
Untuk menambahkan space antara nama dan sisi atas Layout, tambahkan padding atas.
Buka
res/values/dimens.xml
.Lalu buat
dimen
baru bernamasmall_padding
dengan nilai attributes8dp
<dimen name="small_padding">8dp</dimen>
Menambahkan Margin
Tetap berada di
res/values/dimens.xml
Buat
dimen
baru bernamalayout_margin
dan beri nilai attributes16dp
.<dimen name="layout_margin">16dp</dimen>
Menambahkan Font
Buka
res/layout/activity_main.xml
dan pilih Design tab.Pada Component Tree click
TextView
dan pada panel Attributes carifontFamily
dan click tombol drop-down, scroll hingga paling bawah lalu click More Fonts.Pada halaman Resource, cari
roboto
dan pilih Roboto. Pada list Preview, pilih Regular.Pilih Add font to project, lalu click OK.
Maka pada folder res
akan terbuat folder baru yaitu font
yang berisikan roboto.ttf
. Lalu tinggal tambahkan @font/robot
pada attribute TextView
kita.
Menambahkan style
Klik kanan pada folder
res/values
->Value Resource Files
. Lalu beri File name berupastyles
.Lalu tambahkan semuanya tadi menjadi satu style, seperti contoh dibawah.
<style name="WelcomeStyle"> <item name="android:layout_marginTop">@dimen/layout_margin</item> <item name="android:fontFamily">@font/roboto</item> <item name="android:paddingTop">@dimen/small_padding</item> <item name="android:textColor">@android:color/black</item> <item name="android:textSize">@dimen/text_size</item> </style>
Lalu pada
res/layout/activity_main.xml
dan tab Code. UbahTextView
menggunakanstyle="@style/WelcomeStyle"
. Seperti contoh dibawah.<TextView android:id="@+id/textView" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/welcome_to_anbidev" android:textAlignment="center" style="@style/WelcomeStyle"/>
Setelah itu coba jalankan Aplikasi yang Anda buat.
Menambahkan ImageView
ImageView
adalah view yang dipergunakan untuk menampilkan resources gambar. Seperti contoh, ImageView
dapat menampilkan Bitmap
resources seperti PNG, JPG, GIF, atau WebP dan juga Drawable
resources seperti gambar Vector.
Coba kalian download gambar atau icon apa saja dari internet. Setelah itu taruh gambar pada
res/drawable/
dan beri namaic_nama_gambar
.Setelah itu pada
res/layout/activity
_main.xml
tambahkan viewImageView
dan beri attributes seperti dibawah. (android:layout_height="128dp"
bisa anda sesuaikan dengan ukuran asli gambar Anda.)<ImageView android:id="@+id/imageView" android:layout_width="match_parent" android:layout_height="128dp" app:srcCompat="@drawable/ic_anbidev_logo"/>
Coba Anda perhatikan pada tab Design -> Component Tree, maka kalian akan melihat Warning pada
ImageView
yang kita buat kehilangan sebuahcontentDescription
, yang dimana akan digunakan oleh screen readers untuk dijelaskan kepada users.Beri attributes
android:contentDescription="Nama Desc"
untuk membericontentDescription
. Jika ada warning hardEncoded, jangan lupa untuk di extract resource stringnya, bisa langsung Anda lakukan dengan menaruh pointer padacontentDescription
lalualt
+enter
(Option
+Enter
pada Mac).Dan juga berikan margin atas pada
ImageView
dengan nilai attributes16dp
dan extract margin tersebut kedimens.xml
. MakaImageView
kita akan menjadi seperti dibawah ini.<ImageView android:id="@+id/imageView" android:layout_width="match_parent" android:layout_height="128dp" app:srcCompat="@drawable/ic_anbidev_logo" android:layout_marginTop="@dimen/margin_logo" android:contentDescription="@string/anbidev_logo" />
Menambahkan ScrollView
ScrollView
adalah view group yang mengijinkan child view didalamnya dapat di scroll, jika coba Anda membuat text yang sangat panjang menggunakan lorem ipsum dan hanya menggunakan LinearLayout maka kalian tidak dapat menscroll layout tersebut. Maka dari itu ScrollView
sangat dibutuhkan disini. Berikut adalah gambaran menggunakan ScrollView
.
Menambahkan ScrollView yang berisikan TextView
Buka
activity_main.xml
dan pada tab Design.Taruh
ScrollView
dengan menariknya dari Palette menuju ke Component Tree tepat dibawahImageView
.Lalu beri
id
padaScrollView
dengan namascroll_view
. Lalu singkirkanLinearLayout
yang berada diScrollView
karena tidak akan kita gunakan.Setelah itu masukkan
TextView
didalamScrollView
, dan setid
menjaditext_scroll
.Tambahkan
res/values/dimens.xml
baru<
_dimen name="layout_padding"
_>
_16dp
_</
_dimen
_>
untuk style baru bagitext_scroll
.Tambahkan style baru di
res/values/styles.xml
. Berikut contoh codenya.<style name="ScrollText"> <item name="android:lineSpacingMultiplier">1.2</item> <item name="android:fontFamily">@font/roboto</item> <item name="android:paddingEnd">@dimen/layout_padding</item> <item name="android:paddingStart">@dimen/layout_padding</item> <item name="android:textColor">@android:color/black</item> <item name="android:textSize">@dimen/text_size</item> </style>
Lalu
TextView
padaactivity_main.xml
tinggal kita beri attributes style dan juga string yang ingin kita gunakan. (Disini Anbi menggunakan Lorem Ipsum, biar cepat xixi.) Berikut adalah contoh string dari Lorem Ipsum.<string name="lorem">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sodales ac erat at convallis. Phasellus finibus nulla ornare volutpat fringilla. Quisque blandit, nunc ut venenatis efficitur, est nulla aliquam risus, quis pharetra velit sapien eu velit. Suspendisse pharetra est elit, vel aliquam diam accumsan vitae. Sed varius mollis commodo. Sed condimentum felis at risus vehicula porttitor. Suspendisse eros diam, tincidunt in lobortis ac, fermentum sit amet mauris. \n\nNam hendrerit massa tellus, sed gravida massa interdum eu. Vestibulum felis neque, hendrerit id libero nec, suscipit iaculis nisl. Maecenas nisl massa, feugiat eu tristique ac, tristique vel risus. Nam sed pretium mi. Duis nec eleifend eros. Fusce cursus nulla magna, et euismod eros pharetra ac. Cras in velit metus. Duis eu nulla at nibh pharetra efficitur. \n\nVestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Sed eu dictum enim. Pellentesque et justo id lorem tempor feugiat non ac sapien. Praesent non velit lobortis, scelerisque nunc in, ornare elit. Nullam sodales pellentesque diam non mattis. Proin in ex ut mauris ornare maximus. Sed justo neque, molestie tempus laoreet at, suscipit quis nulla. Vestibulum suscipit pulvinar pellentesque. Donec finibus ipsum facilisis erat sollicitudin semper. \n\nSed ut dolor dolor. Fusce vel blandit leo. Vestibulum mi odio, scelerisque id bibendum in, egestas vitae leo. Mauris in mi tortor. Fusce malesuada faucibus elit non iaculis. Duis vitae auctor metus. In ullamcorper facilisis egestas. Mauris sit amet magna nulla. Integer congue cursus arcu eget molestie. Aliquam erat volutpat. \n\nDonec tempus porttitor magna, ullamcorper pretium nisi vulputate in. Etiam sit amet tortor neque. Phasellus condimentum ornare interdum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed bibendum id purus ac ultricies. In efficitur euismod consequat. Aliquam semper massa nunc, ac efficitur lorem venenatis suscipit. Duis porta, enim a sollicitudin luctus, arcu turpis posuere felis, ac ullamcorper justo magna ullamcorper nisl. Curabitur viverra risus eget nunc porttitor, eu ultricies enim eleifend. Curabitur metus justo, tristique quis mollis at, sollicitudin eu nulla.</string>
Note:
- Gunakan
\n
untuk line break. - Jika Anda menggunakan
'
, kalian harus mengakalinya dengan backslash. Sebagai contoh"You mustn\\'t forget the backslash."
. - Untuk bold text, gunakan
<b>...</b>
. dan untuk italic<i>...</i>
. Sebagai contoh"Ini adalah text <b>Bold</b> sedangkan ini adalah text <i>Italic</i>."
TextView
didalam ScrollView.<TextView android:id="@+id/text_scroll" android:layout_width="match_parent" android:layout_height="wrap_content" style="@style/ScrollText" android:text="@string/lorem" />
- Gunakan
Setelah itu, coba jalankan Aplikasi yang dibuat dan amati hasilnya.
Done!
yap! Untuk sementara ini dulu materi dari Layouting pada Android Studio.
Happy Code y’all!