1. ホーム
  2. android

スクロールビュー内でレイアウトの最下部にビューを追加する

2023-09-29 15:20:43

質問

というわけで、私のレイアウトは基本的にこんな感じです。

<ScrollView>
    <RelativeLayout>
        <BunchOfViews/>
        <ImageView android:layout_alignParentBottom="true"/>
    </RelativeLayout>
</ScrollView>

私の場合は ScrollView を使用しているので、画面の高さに関係なく、すべてのレイアウトが常に表示されます。問題は、画面の高さが非常に高い場合でも、レイアウトを表示するために ImageView が一番下に来るようにしたいことです。しかし ScrollView の子は底が定義されていないようです。そのため View はレイアウトの一番上に配置されています。どうすればこの問題をきれいに解決できるでしょうか?

どのように解決するのですか?

私も同じ問題にぶつかりました。 私は非常に満足のいく解決策を見つけることができませんでしたが、ここに私がそれをした方法があります。 たぶん、他の誰かがもっと良い方法をもっているのでしょうが、私は何もしないレイアウトを追加するのが嫌いです。

私のハックは、ダミーの linearlayout の下に scrollview があり、その下に fill_parent を強制的に占有させ scrollview を画面いっぱいに表示させます。 次に、好きなコンポーネントをその linearlayout .

これを行う私のレイアウトの一つを紹介します。

<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:fillViewport="true" >

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_marginTop="15px" >

        <!-- bunch of components here -->

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_below="@+id/spinner"
            android:layout_marginTop="5px"
            android:gravity="center_horizontal|bottom"
            android:paddingTop="2px" >

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:paddingLeft="20px"
                android:paddingRight="20px"
                android:text="Delete" />
        </LinearLayout>
    </RelativeLayout>
</ScrollView>