滚动查看超出屏幕底部

我突然有一个问题,滚动视图超出了屏幕的底部,所以即使你一直向下滚动,它不会显示所有的内容。 XML是:

<?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" android:background="#FFFFFFFF"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="15dp" android:background="#FFBBBBBB" android:orientation="vertical" > <View android:layout_width="100dp" android:layout_height="300dp" android:layout_margin="15dp" android:layout_gravity="center_horizontal" android:background="#FFDDDDFF"/> <View android:layout_width="100dp" android:layout_height="300dp" android:layout_margin="15dp" android:layout_gravity="center_horizontal" android:background="#FFDDDDFF"/> </LinearLayout> </ScrollView> 

这并没有比这更简单。 一旦你完全滚动下来(如滚动的形状所示),你应该看到底部的白色边缘,而是这样的:

scrollview的底部

与顶部相比:

在scrollview的顶部

底部应该看起来像顶部,只是颠倒。 这发生在模拟器,在真实的设备和几乎所有我试过的Android版本。 我不知道我做错了什么(如果有的话)…)。

请不要猜测,不要从臀部拍摄! 只有testing的答案。 我已经浪费了足够的时间。 谢谢。

Solutions Collecting From Web of "滚动查看超出屏幕底部"

在死胡同中浪费了很多时间之后,我终于通过这个其他SO线程走上了正确的轨道:问题是LinearLayout上的布局边界。 显然ScrollView不喜欢,就像它不喜欢它的孩子被集中(许多其他人标记的问题,但不是我的问题在这里),谁知道还有什么。 非常挑剔的部件。 像这样的问题使我重新考虑了我对Android的承诺:相对于其他平台而言,这太费时了,即使你喜欢这个挑战,时间也是金钱。

无论如何,为了那些稍后将在这里翻牌的人的利益,这里是左边的一个破碎的布局(上面的一个更简单的版本)和一个右边的工作的并行示范。 诀窍是在额外的容器上使用填充来模拟具体情况。

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#00FFFF" android:orientation="horizontal" android:baselineAligned="false"> <ScrollView android:layout_width="0dp" android:layout_weight="1" android:layout_height="match_parent" android:background="#FFFFFFFF"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="15dp" android:background="#FFBBBB22" android:orientation="vertical"> <View android:layout_width="100dp" android:layout_height="1000dp" android:layout_margin="15dp" android:layout_gravity="center_horizontal" android:background="#FFDDDDFF"/> </LinearLayout> </ScrollView> <View android:layout_width="1dp" android:layout_height="match_parent" android:background="#FF000000"/> <ScrolllView android:layout_width="0dp" android:layout_weight="1" android:layout_height="match_parent" android:background="#FFFFFFFF"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="15dp" android:background="#FFFFFF" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#FFBBBB22" android:orientation="vertical"> <View android:layout_width="100dp" android:layout_height="1000dp" android:layout_margin="15dp" android:layout_gravity="center_horizontal" android:background="#FFDDDDFF"/> </LinearLayout> </LinearLayout> </ScrollView> </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" android:background="#FFFFFFFF" android:padding="5dp" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="15dp" android:background="#FFBBBBBB" android:orientation="vertical" > <View android:layout_width="100dp" android:layout_height="1500dp" android:layout_gravity="center_horizontal" android:layout_margin="15dp" android:background="#FFDDDDFF" /> <View android:layout_width="100dp" android:layout_height="300dp" android:layout_gravity="center_horizontal" android:layout_margin="15dp" android:background="#FFDDDDFF" /> <View android:layout_width="100dp" android:layout_height="10dp" android:layout_gravity="center_horizontal" android:layout_margin="15dp" android:background="#FF00FF00" /> </LinearLayout> 

在这里输入图像说明

只要尝试把LinearLayout放在另一个像这样:

 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FFFFFFFF"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="15dp" android:background="#FFBBBBBB" android:orientation="vertical"> <View android:layout_width="100dp" android:layout_height="300dp" android:layout_gravity="center_horizontal" android:layout_margin="15dp" android:background="#FFDDDDFF" /> <View android:layout_width="100dp" android:layout_height="300dp" android:layout_gravity="center_horizontal" android:layout_margin="15dp" android:background="#FFDDDDFF" /> </LinearLayout> </LinearLayout> </ScrollView>