2013-09-06 10 views
6

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      android:background="@drawable/bg" 
      android:gravity="center_horizontal"> 

    <TextView 
     android:id="@+id/trackSelectorText" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal"/> 

    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center"> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical"     
      android:gravity="center_horizontal"> 

     <Button      
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="foo" /> 
     <!-- More buttons --> 
     </LinearLayout> 
    </ScrollView> 
</LinearLayout> 

इस थोड़े से काम करता है, फिर भी मैं पिछले बटन के नीचे एक बड़ा रिक्त स्थान (राशि यानी scrollview कर सकते हैं बहुत दूर स्क्रॉल करें)। एक वास्तविक टैबलेट और एक फोन कॉन्फ़िगरेशन के साथ एम्यूलेटर पर दोनों। यदि मैं center आंतरिक लाइनरलाउट (center_horizontal के बजाय), स्थान समान रूप से ऊपर और नीचे के बीच फैलता है, जिसे मैं न तो चाहता हूं। मैं इस लेआउट को कैसे ठीक करूं?

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

enter image description here

+0

के तल पर अतिरिक्त गद्दी से बचने के लिए आप आकर्षित कर सकते हैं कि आप क्या चाहते कर सकते हैं? – Shark

+0

हो गया, मुझे उम्मीद है कि यह कल्पना करना आसान बनाता है। – Lennart

+0

'स्क्रॉलव्यू' 'एंड्रॉइड देने का प्रयास करें: layout_height =" match_parent "'। मुझे संदेह है कि अंतरिक्ष स्क्रॉलव्यू के अंदर है लेकिन वास्तव में –

उत्तर

10

वास्तव में, यह वास्तव में लेआउट से संबंधित नहीं था (जब तक मैं कुछ याद कर रहा हूँ)। मैंने पृष्ठभूमि को जिम्मेदार ठहराते हुए टिप्पणी की, और अचानक काम किया। पृष्ठभूमि की छवि (@drawable/bg) बस बहुत बड़ी थी और स्क्रॉलिंग का कारण बन गया। मैंने पृष्ठभूमि को 9-पैच छवि में परिवर्तित कर दिया, इसलिए इसे स्वचालित रूप से स्केल किया जा सकता था, और voilà, अतिरिक्त स्थान चला गया था। फिर भी, अगर यह 9-पैच के बिना प्राप्त किया जा सकता था, तो मुझे अभी भी यह जानने में दिलचस्पी होगी कि यह XML फ़ाइल में किया जा सकता है या नहीं।

1

मैं अपने code..Work पूरी तरह से साथ की जाँच की है:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:background="@drawable/bg" 
     android:gravity="center_horizontal"> 

<TextView 
    android:id="@+id/trackSelectorText" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:gravity="center_horizontal"/> 

<ScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_gravity="center"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical"     
     android:gravity="center_horizontal"> 

    <Button      
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="foo" /> 
    <!-- More buttons --> 
    </LinearLayout> 
    </ScrollView> 
</LinearLayout> 

आप मदद किया जा सकता है रिक्त स्थान मेरा मतलब है सही छवि पर नीचे बटन 6 से एक है। ...... !!

+0

और मूल कोड के साथ क्या अंतर है? –

8

इस विशेषता को अपने स्क्रॉलव्यू तत्व में जोड़ने का प्रयास करें। एंड्रॉयड: fillViewport = "true"

<ScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_weight="1" 
    android:fillViewport="true" > ... </ScrollVIew> 

रेफरी: ScrollView Ref

+1

एंड्रॉइड: layout_height = "match_parent" को एंड्रॉइड में बदला जाना चाहिए: layout_height = "0dp" – Mieszko

1

आप scrollview में इस विशेषता का उपयोग दृश्य

android:overScrollMode="never" 
संबंधित मुद्दे