私は次のようにシンプルなレイアウトを持っています:
<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のマージンがありますが、下にスクロールすると、スクロールビューはマージンまでスクロールしません。したがって、スクロールの下部はイメージビューです。ピンクのマージンではありません。
どうすればこれを防ぐことができますか?これにより、ユーザーはページがまだ終了していないと考え、さらにスクロールしたくなります。
私は後で同様の状況が次のスレッドですでに回答されていることを知りました 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>
@Mehmet Katirciogluによって投稿されたソリューションはうまく機能しますが、余分なビューなしでAndroid:layout_marginをAndroid: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/>
使用する Android:fillViewport="true"
のScrollView
で実行できます。
this thread の例。