2012-03-17 13 views
5

मेरे पास एक स्क्रॉलव्यू के साथ एक एंड्रॉइड प्रोग्राम है जो मेरे कंप्यूटर पर एमुलेटर पर स्क्रॉलबी विधि को कॉल करते समय स्वचालित स्क्रॉल सही ढंग से करेगा, लेकिन यह मेरे एंड्रॉइड फोन पर नहीं करेगा।एंड्रॉइड स्क्रॉल व्यू क्लास में smoothScrollBy विधि का उपयोग

यहाँ कोड है:

public class RecordGameActivity3 extends Activity { 
ScrollView myView; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.recordgame3); 
    myView = (ScrollView)findViewById(R.id.scrollView1); 

} 

public void addPlayer(View v) 
{ 
    //Removed non-related code 

    myView.smoothScrollBy(0, 50); 
} 
} 
इसके अलावा

, नियमित रूप से scrollBy या विधि काम नहीं करता है scrollTo विधि (हालांकि मैं सिर्फ इतना है कि का उपयोग नहीं किया जा सकता है सही ढंग से के बाद से उस कंप्यूटर पर या तो काम नहीं करता है)। क्या किसी को पता है कि क्या गलत हो सकता है?

संपादित करें:

डेरेल के जवाब के रूप में मेरे समस्या से पता चला है मुझे था कि मैं एक समारोह है, जहां मैं लेआउट कि पुस्तक क्षेत्र काफी बड़ा होने के लिए सक्षम होने के लिए होगा में परिवर्तन करने गया था के अंतर्गत अपना smoothScrollBy विधि बुला रहा था स्क्रॉल किया। जाहिर है, जब तक मैं इसे समारोह में बुला रहा था, तब तक परिवर्तन वास्तव में लागू नहीं किए गए थे और इसलिए इसे स्क्रॉल नहीं किया जा सका।

public class RecordGameActivity3 extends Activity { 
ScrollView myView; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.recordgame3); 
myView = (ScrollView)findViewById(R.id.scrollView1); 

// New code that listens for a change in the scrollView and then calls the scrollBy method. 
ViewTreeObserver vto = myView.getViewTreeObserver(); 
    vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 
    public void onGlobalLayout() { 
     myView.smoothScrollBy(0, 100); 
    }}); 

} 

public void addPlayer(View v) 
{ 
    //Code that is called on an onClick listener that adds things to the ScrollView making it scrollable. 
} 
} 

उत्तर

8

आप onCreate विधि से smoothScrollBy बुला रहे हैं:

इस प्रकार, मैं कोड का पालन करने के उनकी सलाह का उपयोग कर परिवर्तित? विचारों के सेट होने के बाद तक इंतजार करने का प्रयास करें, उदाहरण के लिए रेज़्यूम से। (यदि आपको इसे ऑन्रेट से करना होगा, तो आप अपने दृश्य के लिए एक ViewTreeObserver को ऑनग्लोबललाउट लिस्टर के साथ पंजीकृत कर सकते हैं, और वहां से स्क्रॉलिंग कर सकते हैं।)

+0

ठीक है - मैं इसे ऑन्रेट विधि से नहीं कर रहा हूं लेकिन मैं इसे एक विधि में कर रहा हूं जहां मैं केवल उन घटकों को जोड़ रहा हूं जो इसे स्क्रॉल करने में सक्षम होंगे। मैं ViewTreeObserver का उपयोग कैसे कर सकता हूं? –

+0

कोई बात नहीं - मुझे पता चला कि कैसे। आपकी मदद के लिए बहुत बहुत शुक्रिया। –

2

मेरे मामले में, मुझे MotionEvent.ACTION_UP ईवेंट होने पर स्क्रॉलव्यू स्क्रॉल करने की आवश्यकता है सटीक स्क्रॉलव्यू में ट्रिगर किया गया, scrollTo() काम करता है, लेकिन smoothScrollTo() नहीं करता है। दोस्तों के लिए धन्यवाद, मैंने इसे अभी समझ लिया है, एक हैंडलर को चिकनी बनाने के लिए उपयोग करें थोड़ी देर के बाद दृश्य को स्क्रॉल करें।

संबंधित मुद्दे