Ada banyak jawaban bagus di sini, tetapi saya hanya ingin menambahkan satu hal. Terkadang Anda ingin menggulir ScrollView ke tampilan tata letak tertentu, alih-alih gulir penuh ke atas atau bawah.
Contoh sederhana: dalam formulir pendaftaran, jika pengguna mengetuk tombol "Daftar" ketika teks edit formulir tidak diisi, Anda ingin menggulir ke teks edit khusus itu untuk memberi tahu pengguna bahwa ia harus mengisi bidang itu.
Dalam hal ini, Anda dapat melakukan sesuatu seperti itu:
scrollView.post(new Runnable() {
public void run() {
scrollView.scrollTo(0, editText.getBottom());
}
});
atau, jika Anda menginginkan gulir yang lancar dan bukan gulir instan:
scrollView.post(new Runnable() {
public void run() {
scrollView.smoothScrollTo(0, editText.getBottom());
}
});
Jelas Anda dapat menggunakan jenis tampilan apa pun alih-alih Edit Teks. Perhatikan bahwa getBottom () mengembalikan koordinat tampilan berdasarkan tata letak induknya, sehingga semua tampilan yang digunakan di dalam ScrollView hanya boleh memiliki induk (misalnya Tata Letak Linear).
Jika Anda memiliki banyak orang tua di dalam anak ScrollView, satu-satunya solusi yang saya temukan adalah dengan memanggil requestChildFocus pada tampilan induk:
editText.getParent().requestChildFocus(editText, editText);
tetapi dalam hal ini Anda tidak dapat memiliki gulungan yang lancar.
Saya harap jawaban ini dapat membantu seseorang dengan masalah yang sama.
mScrollView.post(new Runnable() { public void run() { mScrollView.fullScroll(View.FOCUS_DOWN); } });