我有一个简单的布局如下:
<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>
scrollview的背景是粉红色,内部的线性布局有android图标图像,高度为800dp(不适合屏幕)。我期待看到的是,imageview浮动在粉红色的背景中,每边(顶部,底部,左侧,右侧)的边距为10dp。但是当我滚动到底部时,滚动视图不会滚动到保证金,因此滚动的底部是图像视图而不是粉红色边距。
我该怎样防止这种情况?这使用户认为页面尚未结束,并且让他想要滚动更多。
答案 0 :(得分:50)
我后来发现,@olefevre在以下帖子https://stackoverflow.com/a/16885601/1474471中已经回答了类似的情况。
使用填充添加一个包含当前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>
答案 1 :(得分:15)
@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/>
答案 2 :(得分:1)
在android:fillViewport="true"
上使用ScrollView
可能会这样做。
this thread中的示例。