2010-12-17 13 views
12

मुझे अपने आवेदन के साथ कोई समस्या है। मैंने हाल ही में ScrollView को LinearLayout के अभिभावक के रूप में जोड़ा है। जब मेरे डिवाइस अभिविन्यास को लैंडस्केप पर फ़्लिप करते हैं, तो मेरे बटन शीर्ष पर कट जाते हैं। जब मैं नीचे स्क्रॉल करता हूं, तो मैं आखिरी बटन को "ब्लैक स्पेस" के साथ बस ठीक कर सकता हूं, केवल शीर्ष काट दिया जाता है। मैंने चारों ओर देखा और मुझे यकीन नहीं है कि यह क्यों हो रहा है। यहां कुछ चित्र दिए गए हैं ताकि आप समझ सकें कि यह कैसा दिखता है।एंड्रॉइड लैंडस्केप मोड शीर्ष पर अपने बटन काट रहा है

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_gravity="center" 
    android:gravity="center_vertical"> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_gravity="center"> 
    <Button 
     android:id="@+id/BeefButton" 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:layout_gravity="center" 
     android:background="@drawable/backgroundlayer" 
     android:drawableLeft="@drawable/beefbutton" 
     android:text="Beef" 
     android:textColor="#FFFFFF" 
     android:textSize="32px" 
     android:textColorHighlight="#FF6600"/> 
    <Button 
     android:id="@+id/PoultryButton" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:layout_width="match_parent" 
     android:background="@drawable/backgroundlayer" 
     android:drawableLeft="@drawable/chickenbutton" 
     android:text="Poultry" 
     android:textColor="#FFFFFF" 
     android:textSize="32px"   
     android:textColorHighlight="#FF6600"/> 
    <Button 
     android:id="@+id/FishButton" 
     android:layout_height="wrap_content" 
     android:background="@drawable/backgroundlayer" 
     android:drawableLeft="@drawable/fishbutton" 
     android:text="Fish" 
     android:textColor="#FFFFFF" 
     android:textSize="32px" 
     android:textColorHighlight="#FF6600" 
     android:layout_gravity="center" 
     android:layout_width="match_parent"/> 
    <Button 
     android:id="@+id/PorkButton" 
     android:layout_height="wrap_content" 
     android:background="@drawable/backgroundlayer" 
     android:drawableLeft="@drawable/porkbutton" 
     android:text="Pork" 
     android:textColor="#FFFFFF" 
     android:textSize="32px" 
     android:textColorHighlight="#FF6600" 
     android:layout_gravity="center" 
     android:layout_width="match_parent"/> 
    <Button 
     android:id="@+id/VegetablesButton" 
     android:layout_height="wrap_content" 
     android:background="@drawable/backgroundlayer" 
     android:drawableLeft="@drawable/vegetablesbutton" 
     android:text="Vegetables" 
     android:textColor="#FFFFFF" 
     android:textSize="32px" 
     android:textColorHighlight="#FF6600" 
     android:layout_gravity="center" 
     android:layout_width="match_parent"/> 
</LinearLayout> 
</ScrollView> 
+0

अपने लेआउट पोस्ट करें । पोर्ट्रेट और लैंडस्केप मोड के लिए आपके पास वही है? –

+0

इसके अलावा, क्या कोई कारण है कि आप ListView का उपयोग नहीं कर रहे हैं, जैसा कि एक ScrollView के साथ एक LinearLayout के विपरीत है? क्या आपकी सूची वस्तुएं हमेशा वही हैं, और उनमें से केवल 5? –

+0

हां वे बिल्कुल वैसे ही हैं, केवल पांच आइटम – SickNick

उत्तर

19

अपने LinearLayout पर android:layout_gravity="center" निकालने के लिए, है, इसलिए इसके scrollview में LinearLayout केंद्रित scrollview की ऊंचाई, अपनी स्क्रीन आकार से बड़ी है जब आप इसे लैंडस्केप मोड में बदलने को हटाने यह समाधान नहीं हो सकता है, हालांकि , कि यह क्या हो रहा है है,

आप सूचीदृश्य उपयोग करने के लिए सफलतापूर्वक परिदृश्य

+1

मेरे आइटम केंद्र में सूचीबद्ध होने का कोई तरीका नहीं है, भले ही सही है? :-( – SickNick

+0

आप अपने स्क्रॉल व्यू पर "layout_gravity =" center "" जोड़ सकते हैं और इसे wrap_content कर सकते हैं। इसके परिणामस्वरूप जब दृश्य पर्याप्त नहीं होता है और वहां सही तरीके से स्क्रॉलिंग होता है तो इसका दृश्य इसके कंटेनर में केंद्र होता है। – Graeme

2

मैं जानता हूँ कि यह एक पुरानी धागा है समर्थन करने के लिए सक्षम होने के लिए अपने लेआउट संशोधन पर विचार कर सकते हैं, इसे और अधिक समझ बनाने सकता है, लेकिन मैं बिताया इस समस्या पर दो दिन। "Layout_gravity" कथन को हटाने के दौरान, समस्या को काटने में मदद मिलती है, केंद्र में सक्षम नहीं होने पर टिप्पणी भी सच है। आखिरकार मेरे लिए क्या काम किया, जो मेरी राय में हैक है, एक लेआउट केंद्रित के शीर्ष पर स्क्रॉलव्यू और बच्चों के रूप में दो लाइनरलेआउट्स को कैस्केड किया गया था। स्क्रॉलव्यू और लाइनरलेआउट्स पर भी ऊंचाई और चौड़ाई को लपेटना था। यह सबसे अच्छा समाधान नहीं है, लेकिन मैंने सफलता के साथ सब कुछ करने की कोशिश की, जिसमें सेटलेआउट स्पेम्स के साथ कोड में गुरुत्वाकर्षण स्थापित करना शामिल था, यदि ऑब्जेक्ट स्क्रीन आकार की चौड़ाई से कम थे। मुझे उम्मीद है इससे किसी को सहायता मिलेगी।

0

संकेत (android:layout_gravity="center" को हटा रहा है) कि @ स्लिम ने कहा कि काम करता है लेकिन कोई केंद्रीय संरेखण नहीं करता है।

मेरे समाधान:

मैं center करने के लिए अपने gravity सेट के साथ एक LinearLayout साथ मुख्य लंबे लेआउट लपेटकर और दे android:layout_gravity="center" द्वारा यह तय मुख्य लेआउट के लिए रहते हैं:

<ScrollView 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      > 
     <LinearLayout 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:gravity="center"> 

      <!-- .... the main long layout ... --> 

     </LinearLayout> 

</ScrollView> 
संबंधित मुद्दे