1. ホーム
  2. android

[解決済み] LinearLayoutがScrollView内で展開されない

2022-03-25 04:56:18

質問

私は 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 なぜなら、Eclipseでは Android Layout Editor を選択すると ScrollView (アウトラインパネル)を選択すると、画面の下まで赤い枠でハイライトされます。 LinearLayout のハイライトが画面の下まで拡大されません。どうすればいいのでしょうか?

私が達成しようとしている効果は、いくつかのテキストとその下のボタン ( LinearLayout レベル4ではボタンだけです)。テキストはスクロールバーが必要なほど大きくすることができ、その場合、ユーザがボタンを見るためにスクロールダウンしなければならないようにしたい。テキストがスクロールバーに十分な大きさでない場合、私は LinearLayout を含むボタンが画面の下にくっつくようにしました。

最初は、質問の中に巨大なコードの塊があるのを見るのは、たいてい嫌がられるので、完全なXMLを掲載すべきではないと思いました。しかし、それは必要かもしれないと思われるので、ここに完全なレイアウトがあります。

<?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 が、スクロールできない。他のアイデアは?

解決方法は?

最終的には自分で解決しました。問題は LinearLayout でなく ScrollView (ということを考えると、変な感じがします)。 ScrollView でした が拡大し、一方 LinearLayout はなかった)。

解決策としては android:fillViewport="true" の上に ScrollView .