Saturday, December 14, 2019

Perbedaan ScrollView dan NestedScrollView di Android Studio

Perbedaan ScrollView dan NestedScrollView
Perbedaan ScrollView dan NestedScrollView
السَّلاَمُ عَلَيْكُمْ وَرَحْمَةُ اللهِ وَبَرَكَاتُه sobat 48😁. Bagaimana kabarnya? Semoga selalu dalam keadaan sehat ya. Kali ini saya akan membagikan sebuah artikel yang membahas tentang Perbedaan ScrollView dan NestedScrollView di Android Studio. Walaupun dalam fungsi hampir tidak kelihatan perbedaannya, tetapi jika kalian perhatikan baik-baik perbedaan ScrollView dan NestedScrollView cukup terasa dalam aplikasi Android.

Dalam pembuatan aplikasi Android kita tidak boleh asal-asalan, harus diperhatikan dengan baik segala fungsi dari layout activity yang sudah kita buat agar jika aplikasi kita di-Instal user tidak ada kendala. Perlu kalian tahu, jika kita menggunakan CoordinatorLayout yang di dalamnya berisi CollapsingToolbarLayout maka kita direkomendasikan menggunakan NestedScrollView. Mengapa tidak ScrollView?

Menurut stackoverflow, perbedaan ScrollView dan NestedScrollView adalah:

NestedScrollView digunakan jika ada View yang harus di-Scroll (digulir) di dalam View lain yang juga harus di-Scroll. NestedScrollView compatible dengan CoordinatorLayout. Perbedaan mendasar bisa dilihat dari hal di atas, tapi secara behaviour pun, ternyata ScrollView dan NestedScrollView punya sifatnya masing-masing. Saya tidak bisa klasifikasikan ini sebagai kelebihan atau kekurangan, jadi kalian bisa nilai sendiri saat menggunakan keduanya.

Untuk ScrollView, ScrollView akan nge-Scroll balik ke fokus EditText yang sedang aktif. Mungkin kalian bingung, jadi di sini akan saya perlihatkan gambarannya:
Perbedaan ScrollView dan NestedScrollView
ScrollView
Kalau kalian lihat gambar di atas, kalian mungkin bisa tahu kalau setiap kali Button di klik, maka layar kembali ke-Scroll ke atas. Ini terjadi karena ada EditText yang sedang dalam kondisi “focus” (bisa dilihat dari cursor yang berkedip). ScrollView punya kecenderungan untuk menampilkan EditText yang sedang fokus itu.

Kalau EditText lagi fokus di dekat Button, mungkin tidak akan kelihatan pengaruhnya di layar. Tapi kalau sudah pakai contoh kasus seperti di atas, EditText di paling atas layar sedangkan Button di paling bawah, ini akan membuat user bingung nantinya.

Hal ini tidak akan terjadi kalau kalian pakai NestedScrollView. Untuk mengatasi masalah di atas dari ScrollView, kalian perlu menambahkan koding untuk menambahkan fokus langsung di ScrollView-nya. Caranya:


ScrollView view = (ScrollView)findViewById(R.id.scrollView);
view.setDescendantFocusability(ViewGroup.FOCUS_BEFORE_DESCENDANTS);
view.setFocusable(true);
view.setFocusableInTouchMode(true);
view.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        v.requestFocusFromTouch();
        return false;
    }
});

Sekarang, sebaliknya. Berdasarkan sifatnya, NestedScrollView tidak akan bisa digulir kalau keyboard lagi dalam mode open (sedang dibuka). Kalian lihat kondisinya dari gambar di bawah ini:
Perbedaan ScrollView dan NestedScrollView
NestedScrollView
Kondisi di atas merupakan kondisi normal dari ScrollView. Saat waktu keyboard lagi dalam kondisi terbuka, layar bisa di-Scroll. Tetapi, kondisi di atas tidak akan bisa kalian temui di NestedScrollView. Bisa kalian coba. Saat keyboard menutupi layar, kalian cuma bisa nge-Scroll layarnya sampai jarak tertentu yang sudah kamu atur witdh dan height-nya. Jadi intinya, kalau dari awal layarnya memang sudah tampil sepenuhnya di layar, layar tidak akan nge-Scroll. Walaupun ada View yang ke tutup keyboard. Solusi dari hal ini adalah tambahkan android:windowSoftInputMode="adjustResize" di AndroidManifest.xml kalian.


<activity android:name=".activities.MainActivity" android:windowsoftinputmode="adjustResize">
    <intent-filter>
        <action android:name="android.intent.action.MAIN">

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

Demikian informasi yang saya bagikan untuk kalian. Jangan lupa bagikan artikel ini ke teman-teman kalian agar ikut membaca Perbedaan ScrollView dan NestedScrollView ini. Subscribe juga blog Rivaldi 48 ini agar kalian mendapatkan notifikasi saat Admin update artikel terbaru. Semoga kalian lebih nyaman dan mudah dalam mengakses Blog Rivaldi 48 dimanapun kalian berada. Terima Kasih. Follow Instagram Admin @azhardvls_

0 Comments

Post a Comment

Silahkan tinggalkan komentar jika Anda punya saran, kritik, atau pertanyaan seputar topik pembahasan. Gunakan bahasa yang bijak dan santun. Terima Kasih.