android - LinearLayout ScrollView के अंदर विस्तार नहीं कर रहा है




android-layout (4)

मेरे पास android:layout_height="fill_parent" अंदर एक android:layout_height="fill_parent" है जिसमें android:layout_height="fill_parent" , लेकिन यह android:layout_height="fill_parent" की पूरी ऊंचाई तक विस्तारित नहीं होता है। मेरा लेआउट कुछ ऐसा दिखता है:

level    layout    layout_width    layout_height
1    LinearLayout    fill_parent    fill_parent
2    LinearLayout    fill_parent    wrap_content
3    (some irrelevant stuff)
2    ScrollView      fill_parent    fill_parent <-- this expands full height
3    LinearLayout    fill_parent    fill_parent <-- this does not (has orientation=vertical)
(following stuff probably are irrelevant, but just to be sure:)
4    TextView        fill_parent    fill_parent
4    LinearLayout    fill_parent    wrap_content

मैं देख सकता हूं कि LinearLayout की पूरी ऊंचाई का विस्तार नहीं करता है क्योंकि Android Layout Editor में ग्रहण में, यदि मैं ScrollView (आउटलाइन पैनल में) का चयन करता हूं तो इसे लाल सीमा से हाइलाइट किया जाता है जो स्क्रीन को नीचे तक भरता है लेकिन जब मैं LinearLayout चयन करता हूं तो इसकी हाइलाइट स्क्रीन के नीचे तक विस्तारित नहीं होती है। मैं ऐसा करने के लिए कैसे प्राप्त कर सकता हूं?

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

सबसे पहले मैंने सोचा कि मुझे पूर्ण एक्सएमएल पोस्ट नहीं करना चाहिए क्योंकि यह आमतौर पर एक प्रश्न में कोड का एक बड़ा हिस्सा देखने के लिए एक मोड़ है। हालांकि, ऐसा लगता है कि यह आवश्यक हो सकता है, इसलिए यहां पूर्ण लेआउट है।

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:id="@+id/video_layout"
        android:focusable="true"
        style="@style/VideoLayout">
        <FrameLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:foreground="@android:drawable/ic_media_play"
            android:foregroundGravity="center">
            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/video_thumb"
                android:padding="5dip"
                android:background="#454545"/>
        </FrameLayout>
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:focusable="true"
            style="@style/VideoTitle"
            android:id="@+id/video_title"
            android:layout_gravity="center"
            android:layout_weight="1"/>
    </LinearLayout>
    <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1">
        <!-- this ScrollView expands the full height of the screen.
             However, the next LinearLayout does not expand the full height of the ScrollView -->
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:layout_gravity="fill"
            android:orientation="vertical"
            android:id="@+id/info_layout">
            <TextView
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:id="@+id/info_body"
                style="@style/InfoText"/>
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                style="@android:style/ButtonBar">
                    <Button
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_weight="1"
                        android:text="@string/button_readmore"
                        android:id="@+id/btn_read_more"/>
            </LinearLayout>
        </LinearLayout>
    </ScrollView>
</LinearLayout>

फिलहाल मैंने android:layout_gravity="bottom" समस्याग्रस्त LinearLayout पर android:layout_gravity="bottom" , जो स्क्रीन के निचले हिस्से में बटन चिपक जाता है इससे कोई फर्क नहीं पड़ता। लेकिन यह स्क्रीन के नीचे पाठ छड़ी भी बनाता है, जो ठीक नहीं था।

अद्यतन: स्क्रैच करें कि, android:layout_gravity="bottom" ScrollView को ScrollView करने में असमर्थ बनाता है, ठीक है, स्क्रॉल करें। अन्य विचार?


अंत में समाधान मिला। समस्या LinearLayout साथ नहीं थी, लेकिन LinearLayout साथ (अजीब लगता है, इस तथ्य पर विचार करते हुए कि ScrollView विस्तार कर रहा था , जबकि LinearLayout नहीं था)।

समाधान android:fillViewport="true" का उपयोग करना था android:fillViewport="true"


क्या आप अपना लेआउट एक्सएमएल प्रदान कर सकते हैं? ऐसा करने से लोगों को कम से कम प्रयास के साथ इस मुद्दे को फिर से बनाने की अनुमति मिल जाएगी।

आपको सेट करना पड़ सकता है

android:layout_weight="1"

उस आइटम के लिए जिसे आप विस्तारित करना चाहते हैं


मेरे मामले में मैंने नहीं दिया है

लीनियरलाउट का अभिविन्यास (स्क्रॉलव्यू का बच्चा)

तो डिफ़ॉल्ट रूप से यह क्षैतिज लेता है, लेकिन स्क्रॉलव्यू स्क्रॉल लंबवत रूप से होता है, इसलिए कृपया जांचें कि 'एंड्रॉइड: अभिविन्यास = "लंबवत" आपके स्क्रॉलव्यू के बच्चे (लाइनरलेआउट के मामले में) पर सेट है या नहीं।

यह मेरा मामला था कि यह किसी की मदद करता है


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

लीनियरलाउट (अभिभावक) - स्क्रॉलव्यू (लाइनरलाउट का बच्चा) - लीनियरलाउट (स्क्रॉलव्यू का बच्चा) - यहां जो भी आप चाहते हैं, टेक्स्ट व्यू, बटन, स्पिनर इत्यादि जोड़ें। फिर इस LinearLyout को ScrollView में जोड़ें। ScrollView के लिए केवल एक बच्चा लागू करें और आखिरकार इस स्क्रॉल व्यू को LinearLyout में जोड़ें। यदि परिभाषित क्षेत्र स्क्रीन आकार से अधिक है तो आपको स्क्रॉलव्यू के भीतर स्क्रॉल प्राप्त होगा।





android-layout