Burada pek çok iyi cevap var ama ben sadece bir şey eklemek istiyorum. Bazen, ScrollView'unuzu yukarı veya aşağıya tam bir kaydırma yerine, düzenin belirli bir görünümüne kaydırmak isteyebilirsiniz.
Basit bir örnek: bir kayıt formunda, kullanıcı formun bir düzenleme metni doldurulmadığında "Kaydol" düğmesine dokunursa, kullanıcıya o alanı doldurması gerektiğini söylemek için o belirli düzenleme metnine kaydırmak istersiniz.
Bu durumda şöyle bir şey yapabilirsiniz:
scrollView.post(new Runnable() {
public void run() {
scrollView.scrollTo(0, editText.getBottom());
}
});
veya hızlı kaydırma yerine yumuşak bir kaydırma istiyorsanız:
scrollView.post(new Runnable() {
public void run() {
scrollView.smoothScrollTo(0, editText.getBottom());
}
});
Açıkçası, Metni Düzenle yerine herhangi bir görünüm türünü kullanabilirsiniz. GetBottom () öğesinin, üst düzenine bağlı olarak görünümün koordinatlarını döndürdüğünü, bu nedenle ScrollView içinde kullanılan tüm görünümlerin yalnızca bir üst öğeye sahip olması gerektiğini (örneğin, Doğrusal Düzen) unutmayın.
ScrollView alt öğesinin içinde birden fazla ebeveyniniz varsa bulduğum tek çözüm, ana görünümde requestChildFocus'u çağırmaktır:
editText.getParent().requestChildFocus(editText, editText);
ancak bu durumda düzgün bir kaydırma yapamazsınız.
Umarım bu cevap aynı problemi olan birine yardımcı olabilir.
mScrollView.post(new Runnable() { public void run() { mScrollView.fullScroll(View.FOCUS_DOWN); } });