লিনিয়ারলয়েট কোনও স্ক্রোলভিউয়ের অভ্যন্তরে প্রসারিত হচ্ছে না


371

আমি একটি আছে LinearLayoutভিতরে ScrollViewআছে android:layout_height="fill_parent", কিন্তু এটা পূর্ণ উচ্চতা প্রসারিত নেই ScrollView। আমার লেআউটটি এমন দেখাচ্ছে:

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এটির পূর্ণ উচ্চতাটি প্রসারিত করে না ScrollViewকারণ গ্রহন ইনতে Android Layout Editor, আমি যদি এটি নির্বাচন করি ScrollView(আউটলাইন প্যানেলে) এটি একটি লাল সীমানা দিয়ে হাইলাইট করা হয় যা নীচে স্ক্রিনটি পূর্ণ করে তবে আমি যখন LinearLayoutএর হাইলাইটটি নির্বাচন করি তখন পর্দার নীচে প্রসারিত হয় না। আমি এটি কীভাবে এটি করতে পারি?

আমি যে প্রভাবটি অর্জন করতে চাইছি তা হ'ল এর নীচে কিছু পাঠ্য এবং একটি বোতাম রয়েছে ( LinearLayout4 স্তরের ভিতরে কেবল একটি বোতাম আছে)। স্ক্রোলবারের জন্য টেক্সটটি যথেষ্ট বড় হতে পারে, সেই ক্ষেত্রে আমি চাইব যে বোতামটি দেখতে ব্যবহারকারীকে নীচে স্ক্রোল করতে হবে। যদি স্ক্রোল বারের জন্য পাঠ্যটি যথেষ্ট পরিমাণে বড় না হয় তবে আমি চাই LinearLayoutযে বোতামটি ধারণ করে স্ক্রিনের নীচে আটকে থাকবে।

প্রথমে আমি ভেবেছিলাম আমার সম্পূর্ণ এক্সএমএল পোস্ট করা উচিত নয় কারণ একটি প্রশ্নের মধ্যে কোডের বিশাল অংশ দেখার জন্য এটি সাধারণত টার্ন ডাউন হয়। তবে এটি মনে হয় এটি প্রয়োজনীয় হতে পারে, সুতরাং এখানে সম্পূর্ণ বিন্যাসটি layout

<?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"করে তোলে ScrollView। অন্যান্য ধারণা?

উত্তর:


956

শেষ পর্যন্ত সমাধানটি নিজেই খুঁজে পেয়েছি। সমস্যাটি ছিল না LinearLayout, তবে ScrollView(অদ্ভুত বলে মনে হচ্ছে, যা ছিল তা বিবেচনা করে ScrollView ) বিস্তৃতি যখন LinearLayoutছিল না)।

সমাধানটি ব্যবহার android:fillViewport="true"করা ছিল ScrollView


4
নোট করুন যে লিনিয়ারলআউটটি উল্লম্বভাবে প্রসারিত হবে, তবে এটি আপনার লেআউটে প্রতিফলিত হতে পারে না যদি না এটিতে এমন কোনও নিয়ন্ত্রণ থাকে যা ব্যবহার করে সেই অতিরিক্ত স্থান ব্যবহার করে android:weight
পল ল্যামার্টসমা

এটি সত্যই সহায়তা করে। তার জন্য ধন্যবাদ. তবে এই কোড ছাড়া কখনও কখনও ভাল কাজ করে। তুমি কি জানো কেন?
অশোকচক্রবর্তী নাগারাজন

<লিনিয়ারআলআউট অ্যান্ড্রয়েড: লেআউট_উইথ = "ফিল_প্যারেন্ট" অ্যান্ড্রয়েড: লেআউট_উইট = "র‌্যাপ_কন্টেন্ট" অ্যান্ড্রয়েড: ভলভিউপোর্ট = "সত্য" অ্যান্ড্রয়েড: ব্যাকগ্রাউন্ড = "# 000" অ্যান্ড্রয়েড: ওরিয়েন্টেশন = "উল্লম্ব"> </LinearLayout>
প্রসাদ

3
এত অসুস্থ আমি ঘন্টার পর ঘন্টা বসে ছিলাম এবং আমার কোডটিতে কী ভুল ছিল তা সন্ধান করছিলাম। এই পরামিতার কি জন্য? আপনি কখন এটি মিথ্যা সেট করতে চান?
MyWay

@ প্রসাদ আপনার পিতামাতার সাথে মিলের জন্য লিনিয়ার বিন্যাসের উচ্চতা তৈরি করুন
goonerDroid

22

আমি জানি এই পোস্টটি খুব পুরানো, যারা ব্যবহার করতে চান না তাদের জন্য android:fillViewport="true"কারণ এটি কখনও কখনও কীবোর্ডের উপরে সম্পাদনাটি না নিয়ে আসে। লিনিয়ারলআউটের পরিবর্তে আপেক্ষিক লেআউটটি ব্যবহার করুন এটি উদ্দেশ্যটি সমাধান করে।


8

আপনি কি আপনার লেআউট এক্সএমএল সরবরাহ করতে পারেন? এটি করার ফলে লোকেরা ন্যূনতম প্রচেষ্টা দিয়ে সমস্যাটি পুনরায় তৈরি করতে পারে।

আপনি সেট করতে পারে

android:layout_weight="1"

আপনি প্রসারিত করতে চান আইটেম জন্য


1
আপনার উত্তর করার জন্য আপনাকে ধন্যবাদ। আমি আপনার পরামর্শ চেষ্টা করেছিলাম কিন্তু এটি কার্যকর হয়নি। এক্সএমএলআউটটি অন্তর্ভুক্ত করার জন্য আমি আমার প্রশ্নও আপডেট করেছি।
ফেলিক্স

3

সমাধানটি ব্যবহার করা হয়

android:fillViewport="true"

উপর স্ক্রোল দৃশ্য এবং ব্যবহার করা পরন্তু চেষ্টা

"wrap_content"পরিবর্তে "fill_parent"হিসাবে"fill_parent"

এখন অবচয় করা হয়েছে।


2

আমি এটি পেতে গতিশীলভাবে ব্যবহার করেছি। আমার একটি লিনিয়ারআলআউট আছে এবং এটি শিশু হিসাবে ব্যবহৃত স্ক্রোলভিউয়ের মধ্যে রয়েছে। তারপরে আমি আবার লিনিয়ারআলআউট নিয়ে যাচ্ছি এবং আপনি এই লিনিয়ারলাউটটিতে যা দেখতে চান তা যুক্ত করুন এবং তারপরে এই লিনিয়ারলআউটটি স্ক্রোলভিউতে যুক্ত করুন এবং অবশেষে এই স্ক্রোলভিউরটি লিনিয়ারলয়েটে যুক্ত করুন। তারপরে আপনি আপনার স্ক্রোলভিউতে স্ক্রোল পেতে পারেন এবং কিছুই দৃশ্যমান হবে না।

লিনিয়ারলআউট (পিতা বা মাতা) - স্ক্রোলভিউ (লাইনারলাইআউটের সন্তান) - লিনিয়ারলআউট (স্ক্রোলভিউয়ের সন্তান) - আপনি যা চান এখানে টেক্সটভিউ, বাটন, স্পিনার ইত্যাদি যুক্ত করুন। তারপরে এই লিনিয়ারলাইআউটটি স্ক্রোলভিউতে যুক্ত করুন। স্ক্রোলভিউ প্রযোজ্য এবং সর্বশেষে এই স্ক্রোলভিউকে লিনিয়ারলাইআউটে যুক্ত করুন Bcoz কেবলমাত্র একটি বাচ্চা f যদি সংজ্ঞায়িত অঞ্চলটি স্ক্রিনের আকার থেকে বেশি হয় তবে আপনি স্ক্রোলভিউয়ের মধ্যে একটি স্ক্রোল পাবেন।


তবে এই সমাধানটি এক্সএমএলকে আরও জটিল করে তোলে এবং স্ফীত করতে আরও বেশি সময় নেয়।
twlkyao

1

আমার ক্ষেত্রে আমি এটা দেয় নি

লিনিয়ারলআউট (স্ক্রোলভিউর চাইল্ড) এর ওরিয়েন্টেশন

সুতরাং ডিফল্টরূপে এটি অনুভূমিক লাগে, তবে স্ক্রোলভিউ উল্লম্বভাবে স্ক্রোলগুলি গ্রহণ করে, সুতরাং দয়া করে পরীক্ষা করুন যে 'অ্যান্ড্রয়েড: ওরিয়েন্টেশন = "উল্লম্ব" "আপনার স্ক্রোলভিউয়ের সন্তানের (লিনিয়ারলআউটের ক্ষেত্রে) সেট করা আছে কিনা check

এটি আমার ক্ষেত্রে আশা ছিল এটি কারওর পক্ষে সহায়তা করে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.