web-dev-qa-db-ja.com

Scrollviewが下部のマージンまでスクロールしない

私は次のようにシンプルなレイアウトを持っています:

<ScrollView xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:background="#D23456" >

    <LinearLayout
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:layout_margin="10dp"
    Android:background="#FFFFFF" >

        <ImageView
            Android:layout_width="match_parent"
            Android:layout_height="800dp"
            Android:src="@drawable/ic_launcher" />
    </LinearLayout>

</ScrollView>

スクロールビューの背景はピンク色で、内部の線形レイアウトにはAndroid高さ800dpのアイコン画像(画面に適合しません)があります。イメージビューがフロートすることを期待しています。ピンクの背景で、すべての側(上、下、左、右)に10 dpのマージンがありますが、下にスクロールすると、スクロールビューはマージンまでスクロールしません。したがって、スクロールの下部はイメージビューです。ピンクのマージンではありません。

どうすればこれを防ぐことができますか?これにより、ユーザーはページがまだ終了していないと考え、さらにスクロールしたくなります。

21

私は後で同様の状況が次のスレッドですでに回答されていることを知りました https://stackoverflow.com/a/16885601/1474471 @olefevreによって。

現在のLinearLayoutをパディングで囲む追加のLinearLayoutを追加し、内側のLinearLayoutのレイアウトマージンを削除すると、問題が解決しました。

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent" >

<LinearLayout
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:background="#D23456"
    Android:padding="10dp" >

    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:background="#FFFFFF" >

        <ImageView
            Android:layout_width="match_parent"
            Android:layout_height="800dp"
            Android:src="@drawable/ic_launcher" />
    </LinearLayout>
</LinearLayout>

</ScrollView>
53

@Mehmet Katirciogluによって投稿されたソリューションはうまく機能しますが、余分なビューなしでAndroid:layout_marginAndroid:paddingに変更するだけで問題を解決できます。このような:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent" >

   <LinearLayout
      Android:layout_width="match_parent"
      Android:layout_height="wrap_content"
      Android:background="#D23456"
      Android:padding="10dp" >

      <!-- Your content (ImageView, buttons...) -->
  <LinearLayout/>
18
Filipe Brito

使用する Android:fillViewport="true"ScrollViewで実行できます。

this thread の例。

1
kiriloff