2012-04-15 16 views
6

पर सूचीदृश्य ओवरस्क्रॉल को अक्षम करें मुझे अपनी सूचीदृश्यों में ओवरस्क्रॉल को पूरी तरह अक्षम करने की आवश्यकता है ताकि मैं अपनी खुद की ओवरस्क्रॉल कार्यक्षमता को कार्यान्वित कर सकूं।सैमसंग गैलेक्सी टैब 2.3.3 एंड्रॉइड

कोर सूचीदृश्य कक्षाओं को देखते समय बस सरल होने लगता है, बस overscroll मोड को OVERSCROLL_NEVER पर सेट करके। मेरे सैमसंग गैलेक्सी एस 2 पर यह अच्छा काम है। लेकिन Galaxy Tab 2.3.3.

के लिए काम नहीं करता है क्या किसी को सैमसंग सूची दृश्य अनुकूलन के साथ बहुत अधिक अनुभव है जो मेरी मदद कर सकता है?

उत्तर

2

आपको सूची दृश्य की ऊंचाई को एक निश्चित मान पर सेट करना होगा। अपनी सामग्री गतिशील है वहाँ एडाप्टर रीसेट करने के बाद वास्तविक listsize को मापने के लिए एक अच्छा समारोह है:

public static void setListViewHeightBasedOnChildren(ListView listView) { 
    ListAdapter listAdapter = listView.getAdapter(); 
    if (listAdapter == null) { 
     // pre-condition 
     return; 
    } 

    int totalHeight = 0; 
    int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(), MeasureSpec.AT_MOST); 
    for (int i = 0; i < listAdapter.getCount(); i++) { 
     View listItem = listAdapter.getView(i, null, listView); 
     listItem.measure(desiredWidth, MeasureSpec.UNSPECIFIED); 
     totalHeight += listItem.getMeasuredHeight(); 
    } 

    ViewGroup.LayoutParams params = listView.getLayoutParams(); 
    params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); 
    listView.setLayoutParams(params); 
    listView.requestLayout(); 
} 

आप अपने अनुकूलक सेट करने के बाद पैरामीटर के रूप में अपने सूचीदृश्य के साथ इस स्थिर विधि कॉल करने के लिए है। अब आप एक स्क्रॉलव्यू जोड़ सकते हैं (अंदर आपकी सूचीदृश्य और अन्य विचार हैं)। मैं यह व्यवहार 2.3.3 में पहले कहूंगा कि एक छोटी सी बग है ... मैंने जिस तरीके से वर्णन किया है, उसे स्क्रॉलव्यू के अंदर सूचीदृश्य शामिल करने का कोई आसान तरीका नहीं है। इसी कारण से उन्होंने OVERSCROLL_NEVER मोड प्रस्तुत किया :)

कोड डौगड से है!

3

यह सैमसंग गैलेक्सी टैब पर मेरे लिए काम किया (Android 2.2 के साथ):

try { 

    // list you want to disable overscroll 
    // replace 'R.id.services' with your list id 
    ListView listView = ((ListView)findViewById(R.id.services)); 

    // find the method 
    Method setEnableExcessScroll = 
      listView.getClass().getMethod("setEnableExcessScroll", Boolean.TYPE); 

    // call the method with parameter set to false 
    setEnableExcessScroll.invoke(listView, Boolean.valueOf(false)); 

} 
catch (SecurityException e) {} 
catch (NoSuchMethodException e) {} 
catch (IllegalArgumentException e) {} 
catch (IllegalAccessException e) {} 
catch (InvocationTargetException e) {} 
+0

शानदार !!! यह वास्तव में मुझे बहुत परेशानी बचाई। आप कैसे जानते थे कि किस विधि का नाम देखना है, एस 2 एपीआई सार्वजनिक है? – npace

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