2013-02-11 16 views
15

पर स्क्रॉल नहीं कर रहा है, मैं स्क्रोलव्यू को ठीक से स्क्रॉल नहीं कर सकता। यह हमेशा नीचे की सामग्री को काटता है, जैसे कि यह सामान्य लाइनरलाउट था।स्क्रॉलव्यू सभी

मेरे कोड

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fillViewport="true" > 

    <LinearLayout android:id="@+id/scroll_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:isScrollContainer="true" 
     android:orientation="vertical" > 
बेशक

, मैं पहले से ही जोड़ें/निकालें "fillViewport" और "isScrollContainer" गुण करने की कोशिश की है, और यह कुछ भी नहीं बदला।

अग्रिम धन्यवाद।

+0

आप कृपया पूरा एक्सएमएल पेस्ट कर सकते हैं, हो सकता है आपके LinearLayout के साथ संबंधित कुछ है। – PaNaVTEC

+0

'एंड्रॉइड को बदलने का प्रयास करें: layout_height =" match_parent "' to 'android: layout_height =" 0dp "' और 'android: layout_weight =" 1 "' 'ScrollView' पर जोड़ें। –

+0

बस कोशिश की और कोई भाग्य नहीं। – thomaus

उत्तर

19

उत्तर: XML लेआउट के रूट तत्व के रूप में उपयोग किए जाने पर स्क्रॉलव्यू काम नहीं कर रहा है। इसे लाइनरलायआउट के अंदर लपेटना होगा।

तो समाधान:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <ScrollView android:id="@+id/scroll_view" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:fillViewport="true" > 

     <LinearLayout android:id="@+id/scroll_layout" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" > 
+47

यह मेरे लिए काम नहीं करता है ... – Ciprian

+0

क्या आप निश्चित हैं? !! –

+1

+1 वास्तव में मेरे लिए काम किया, धन्यवाद। –

2

LinearLayout में android:isScrollContainer हटा दें। प्रलेखन के अनुसार android:isScrollContainer दृश्य स्क्रॉल करने योग्य सेट करने के लिए उपयोग किया जाता है। मुझे उम्मीद है इससे आपको मदद मिली होगी। परिभाषा के लिए यह link देखें।

2

एंड्रॉयड स्टूडियो अपने टेम्पलेट्स में से कुछ की गतिविधि फ़ाइल (उदा मास्टर-विस्तार) के लिए एक NestedScrollView कहते हैं। खंड फ़ाइल में स्क्रॉलव्यू होने और उस खंड की गतिविधि फ़ाइल में कोई दूसरा स्क्रॉल दृश्य को काम करने से रोकता है। मेरी खंड फ़ाइल में स्क्रॉलव्यू को हटाकर और गतिविधि फ़ाइल में से किसी को छोड़कर मेरे लिए समस्या हल हो गई।

0

इस समाधान का प्रयास करें, पोस्ट विलंब विधि का उपयोग करके बस अपनी स्क्रॉल में देरी करें।

fragment_test.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/rootRelativeLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    xmlns:fresco="http://schemas.android.com/apk/res-auto"> 

    <ScrollView 
     android:id="@+id/scrollView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_marginTop="40dp" 
     android:fillViewport="true" 
     android:scrollbars="none"> 

     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"> 
      ... 
     </RelativeLayout> 

    </ScrollView> 

</RelativeLayout> 

TestFragment.java

... 
private ScrollView mScrollView; 
... 
mScrollView = (ScrollView) mView.findViewById(R.id.scrollView); 
mScrollView.setSmoothScrollingEnabled(true); 
... 
new Handler().postDelayed(new Runnable() { 
    @Override 
    public void run() { 
     if(isAdded()) { 
      // Scroll 1000px down 
      mScrollView.smoothScrollTo(0, 1000); 
     } 
    } 
}, 150); 

यह मेरे लिए काम किया, यह मदद करता है उम्मीद है।

0

यह मेरी समस्या तय: इससे पहले कि मैं एक LinearLayout को android:isScrollContainer="true" जोड़े और निकाले गए scrollview कोड:

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
<ScrollView 
    android:id="@+id/scrollViewRecords" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fillViewport="true"> 

    <LinearLayout 
     android:id="@+id/sheepList" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" > 

    </LinearLayout> 
</ScrollView> 
</LinearLayout> 

कोड

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:isScrollContainer="true"> 

    <LinearLayout 
     android:id="@+id/sheepList" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" > 

    </LinearLayout> 
</LinearLayout> 
0

के बाद वहाँ एक रास्ता यह बंद करने के लिए है सवाल? यह पुराना है और वर्तमान में वैध के रूप में चिह्नित उत्तर का अर्थ नहीं है। स्क्रॉलव्यू के संबंध में एकमात्र वैध बात यह है कि:

एक व्यू समूह जो दृश्य पदानुक्रम को स्क्रॉल करने के लिए रखता है। स्क्रॉल दृश्य में केवल एक ही प्रत्यक्ष बच्चा हो सकता है। स्क्रॉल व्यू के भीतर कई दृश्य जोड़ने के लिए, सीधे बच्चे को एक व्यू समूह जोड़ें, उदाहरण के लिए LinearLayout, और उस LinearLayout के भीतर अतिरिक्त दृश्य रखें। स्क्रॉल व्यू में कभी भी रीसाइक्लर व्यू या ListView जोड़ें। ऐसा करने से खराब उपयोगकर्ता इंटरफ़ेस प्रदर्शन और खराब उपयोगकर्ता अनुभव होता है।

आधिकारिक दस्तावेज से लिया: https://developer.android.com/reference/android/widget/ScrollView.html

0

चयनित जवाब सही नहीं है!

आप रूट दृश्य के रूप में स्क्रॉलव्यू का उपयोग कर सकते हैं, यह आपके लिए काम नहीं करता है क्योंकि आप पैडिंग खो रहे हैं।

की तरह कुछ जोड़ें:

android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
android:paddingBottom="@dimen/activity_vertical_margin" 
संबंधित मुद्दे