Memahami ScrollView

ScrollView adalah jenis khusus dari FrameLayout dalam arti bahwa ScrollView mengijinkan user untuk men-scroll melalui banyak view yang menempati ruang yang lebih banyak dibanding tampilan fisik layar. ScrollView hanya bisa berisi satu view anak atau ViewGroup, yang biasanya adalah LinearLayout.
Catatan:
Jangan menggunakan ListView (dibahas dalam post yang lain) bersamaan dengan ScrollView. ListView dirancang untuk menampilkan daftar informasi yang saling terkait dan dioptimasi untuk menangani daftar yang banyak.

Berikut adalah kode ScrollView yang berisi LinearLayout dimana di dalamnya berisi beberapa ‘Button’ dan ‘EditText’.
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="id.co.blogspot.diansano.apppertama.MainActivity">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">

<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Tombol 1"/>
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Tombol 2"/>
<Button
android:id="@+id/button3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Tombol 3"/>
<EditText
android:id="@+id/txt"
android:layout_width="match_parent"
android:layout_height="600dp"/>
<Button
android:id="@+id/button4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Tombol 4"/>
<Button
android:id="@+id/button5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Tombol 5"/>

</LinearLayout>
</ScrollView>
Bila kita jalankan di emulator Android Studio, kita akan lihat hasilnya seperti berikut:

‘EditText secara otomatis mendapatkan fokus, karena mengisi seluruh activity (karena tingginya 600dp). Untuk mencegahnya mendapat fokus, kita tambahkan dua atribut berikut pada elemen LinearLayout:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:focusable="true"
android:focusableInTouchMode="true">
Hasilnya adalah seperti berikut:


Terkadang kita ingin EditText secara otomatis mendapatkan fokus, tetapi kita tidak ingin keyboard muncul secara otomatis (yang terjadi pada perangkat riil). Untuk mencegah keyboard supaya tidak muncul, kita tambahkan atribut berikut pada elemen pada file AndroidManifest.xml:
<activity android:name=".MainActivity"
android:windowSoftInputMode="stateHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

No comments: