2010-08-25 8 views
5

मैं एक scrollview कि एक ViewFlipper लपेटता है। ViewFlipper में सामग्री बराबर ऊंचाई का नहीं है, तो मेरी दूसरी स्क्रीन एक बहुत लंबे स्क्रॉलबार कि खाली सामग्री के साथ पर और पर चला जाता है है:पुनर्गणना scrollview?

<ScrollView android:id="@+id/outer_scroll" 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" android:layout_height="fill_parent" 
android:fillViewport="true"> 
<ViewFlipper android:id="@+id/flipper" 
android:layout_width="fill_parent" android:layout_height="fill_parent"> 

<EditText android:id="@+id/desc" style="@style/DescriptionArea" 
android:layout_width="fill_parent" android:layout_height="wrap_content" 
android:enabled="false" android:focusableInTouchMode="false" 
android:background="@null" /> 

<LinearLayout android:id="@+id/details_root" 
android:orientation="vertical" android:layout_width="fill_parent" 
android:layout_height="fill_parent" android:padding="10dp"> 

<TextView android:id="@+id/item_details" style="@style/DetailsLarge" 
android:textColor="#000" android:visibility="gone" 
android:layout_width="wrap_content" android:layout_height="fill_parent" 
android:text="@string/item_details_tags" /> 
<TextView android:id="@+id/tags" android:layout_width="wrap_content" 
android:layout_height="fill_parent" android:textColor="#000" 
android:visibility="gone" /> 
</LinearLayout> 
</ViewFlipper> 
</ScrollView> 

तो, उदाहरण के लिए, EditText ब्लॉक बहुत लंबा है, और स्क्रॉल पट्टी यह सब कैप्चर करता है। मैं LinearLayout पर पहुंचाएं, और स्क्रॉलबार TextView सामग्री अतीत रास्ता बना हुआ है। मैं अनिवार्य रूप से "पुनर्गणना" करने के लिए दृश्य ऊंचाई इसकी आवश्यकता है।

इसके अलावा, EditText और LinearLayout अपने स्वयं के ScrollViews भीतर लपेटकर एक विकल्प, क्योंकि तब मुलायम/वर्चुअल कीबोर्ड ब्लॉक EditText सामग्री नहीं है।

+0

वाह, मैंने अभी आपके बाद एक ही प्रश्न पूछे हैं ... http://stackoverflow.com/questions/3570362/getting-rid-of-extra-space-in-text-switcher – ekawas

उत्तर

16

माप के दौरान, व्यूफ्लिपर (साथ ही व्यूस्विचर, टेक्स्टस्विचर इत्यादि - व्यूएनिमीटर के सभी वंशज) डिफ़ॉल्ट रूप से गैर-दृश्य वाले लोगों सहित सबसे बड़े बच्चे के अनुसार आकार में होंगे।

गलत पर MeasureAllChildren झंडा इस व्यवहार को बदलने के लिए जब आकार को मापने के लिए एक ही वर्तमान में दृश्यमान बच्चे का उपयोग निर्धारित करें:

ViewFlipper flipper = (ViewFlipper)findViewById(R.id.flipper); 
flipper.setMeasureAllChildren(false); 
+0

धन्यवाद! अच्छा उत्तर। –

5

आप एक्सएमएल में अपने viewflipper कर रहे हैं आप भी एंड्रॉयड इस्तेमाल कर सकते हैं: measureAllChildren = "असत्य"।

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