2013-03-01 24 views
8

के अंदर फ़्रेमलेआउट मैं एंड्रॉइड विकास के लिए नया हूं और मुझे निम्न समस्या है। मुझे स्क्रॉल करने योग्य बनाने के लिए ScrollView के अंदर FrameLayout का उपयोग करने की आवश्यकता है। मैंने यहस्क्रॉल व्यू

<ScrollView 
    android:id="@+id/scrollView1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:background="#00ff00"> 

    <FrameLayout 
     android:id="@+id/frameLayout" 
     android:layout_width="match_parent" 
     android:layout_height="500dp" 
     android:background="#ff0000"> 
    </FrameLayout> 
    </ScrollView> 

लिखा लेकिन यह काम नहीं करता है। मैंने RelativeLayout में कोशिश की और यह काम किया, लेकिन मुझे FrameLayout के लिए उपयोग करने की आवश्यकता है। कोई विचार?

उत्तर

4

मैंने इस समस्या को हल करने के लिए कई प्रकारों की कोशिश की, जिसमें उत्तर भी शामिल थे, लेकिन कोई भी सहायक नहीं था। ScrollView हमेशा FrameLayout लपेटता है, लेकिन सब कुछ RelativeLayout, LinearLayout ...

मैं इस के लिए एक समाधान मिल गया है के साथ सामान्य है - FrameLayout की न्यूनतम ऊंचाई निर्धारित करने के लिए। आप setMinimumHeight() विधि से गतिशील रूप से न्यूनतम ऊंचाई सेट कर सकते हैं।

2

आपका एक्सएमएल नमूना काफी अच्छा है, केवल एक चीज जो मैं देख सकता हूं वह है: यदि स्क्रॉललाउट माता-पिता 500 डीपी से बड़ा है तो यह स्क्रॉल नहीं होगा।

वास्तव में, स्क्रॉल केवल तभी उपयोग किया जाता है जब सामग्री स्क्रॉलव्यू से बड़ी हो।

यहाँ

, आप 500dip के लिए अपनी सामग्री ऊंचाई सेट और आप एक 800dip ऊंचाई स्क्रीन पर (उदाहरण के लिए) 'match_parent' को scrollview अगर यह scrollview की मूल पूरे स्क्रीन ले

=> पुस्तक है बस जरूरत नहीं है।

2

कोशिश सेटिंग layout_height "wrap_content" अपने FrameLayout

<FrameLayout 
     android:id="@+id/frameLayout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="#ff0000"> 

यह स्क्रॉल करेगा जब FrameLayout स्क्रीन सीमा से ज्यादा होगा में करने के लिए। या यदि आप स्क्रॉल करने योग्य क्षेत्र की निश्चित ऊंचाई चाहते हैं, तो स्क्रॉलव्यू पर ऊंचाई को 500 डीपी पर सेट करें। यह निर्भर करता है कि आप क्या चाहते हैं, लेकिन कभी भी स्क्रॉलव्यू बच्चे पर निश्चित ऊंचाई निर्धारित न करें। स्क्रॉलव्यू बच्चे की ऊंचाई हमेशा wrap_content होना चाहिए।

<ScrollView 
    android:id="@+id/scrollView1" 
    android:layout_width="match_parent" 
    android:layout_height="500dp" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:background="#00ff00"> 

    <FrameLayout 
     android:id="@+id/frameLayout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="#ff0000"> 
    </FrameLayout> 
</ScrollView> 
1

scrollview के अंदर FrameLayout पाने के लिए, ऐसा करते हैं:

<ScrollView 
    android:id="@+id/scrollView1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_below="@+id/linearLayoutHeader1" 
    android:layout_centerHorizontal="true" > 

    <LinearLayout 
     android:id="@+id/LinearLayout1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" > 
     <FrameLayout 
      android:id="@+id/FrameLayout1" 
      android:layout_width="match_parent" 
      android:layout_height="1440dp" 
      > 
     </FrameLayout> 

    </LinearLayout> 
</ScrollView> 
13

एंड्रॉयड: fillViewport = "true" इस मुद्दे को हल करती है।

एंड्रॉइड: fillViewport, यह निर्धारित करता है कि स्क्रॉलव्यू व्यूपोर्ट को भरने के लिए अपनी सामग्री को फैलाएगा या नहीं।

<ScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fillViewport="true"> 

    <FrameLayout 
     android:id="@+id/frameLayout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 
    </FrameLayout> 
    </ScrollView> 
संबंधित मुद्दे