यहां बहुत सारे अच्छे उत्तर हैं, लेकिन मैं केवल एक बात जोड़ना चाहता हूं। यह कभी-कभी ऐसा होता है कि आप अपने स्क्रॉलव्यू को लेआउट के किसी विशिष्ट दृश्य पर स्क्रॉल करना चाहते हैं, बजाय ऊपर या नीचे एक पूर्ण स्क्रॉल के।
एक सरल उदाहरण: एक पंजीकरण फॉर्म में, यदि उपयोगकर्ता प्रपत्र के एक संपादित पाठ को नहीं भर पाने पर "साइनअप" बटन पर टैप करता है, तो आप उपयोगकर्ता को यह बताने के लिए उस विशिष्ट संपादन पाठ पर स्क्रॉल करना चाहते हैं कि उसे उस फ़ील्ड को भरना होगा।
उस मामले में, आप ऐसा कुछ कर सकते हैं:
scrollView.post(new Runnable() {
public void run() {
scrollView.scrollTo(0, editText.getBottom());
}
});
या, यदि आप एक त्वरित स्क्रॉल के बजाय एक चिकनी स्क्रॉल चाहते हैं:
scrollView.post(new Runnable() {
public void run() {
scrollView.smoothScrollTo(0, editText.getBottom());
}
});
जाहिर है आप एडिट टेक्स्ट के बजाय किसी भी प्रकार के दृश्य का उपयोग कर सकते हैं। ध्यान दें कि getBottom () अपने पैरेंट लेआउट के आधार पर दृश्य के निर्देशांक लौटाता है, इसलिए स्क्रॉल दृश्य के अंदर उपयोग किए जाने वाले सभी दृश्यों में केवल एक माता-पिता (उदाहरण के लिए एक रैखिक लेआउट) होना चाहिए।
यदि आपके पास स्क्रॉलव्यू के बच्चे के अंदर कई माता-पिता हैं, तो मुझे जो एकमात्र समाधान मिला है, वह है माता-पिता को अनुरोध पर कॉल करें:
editText.getParent().requestChildFocus(editText, editText);
लेकिन इस मामले में आप एक चिकनी स्क्रॉल नहीं कर सकते।
मुझे उम्मीद है कि यह उत्तर किसी को उसी समस्या से मदद कर सकता है।
mScrollView.post(new Runnable() { public void run() { mScrollView.fullScroll(View.FOCUS_DOWN); } });