我突然遇到Scrollview超出屏幕底部的问题,这样即使你一直向下滚动它也不会显示所有内容。 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>
它没有比这更简单。一旦你完全向下滚动(如滚动条的形状所示),你应该看到底部的白色边缘,但这就是它的样子:
与顶部比较:
底部应该看起来像顶部,只能反转。这种情况发生在模拟器,真实设备和我尝试过的几乎所有Android版本中。我不知道我做错了什么(如果有的话......)。
请不要猜测,也不要从臀部射击!只测试过答案。我已经浪费了足够的时间在这上面了。感谢。
答案 0 :(得分:8)
在死胡同里浪费了很多时间后,我终于被other SO thread放在了正确的轨道上:问题是LinearLayout上的布局边距。显然ScrollView并不喜欢这样,就像它不喜欢它的孩子居中一样(这个问题被许多其他人标记,但不是我的问题),谁知道还有什么。非常挑剔的小部件。这样的问题让我重新考虑我对Android的承诺:相对于其他平台而言,它太耗时了,即使你喜欢挑战,时间就是金钱。
无论如何,为了那些稍后会在这里翻牌的人的利益,这里是一个并排的示意图,左侧是一个破碎的布局(上面一个版本更简单),另一个是右边的工作版。诀窍是用额外容器上的填充来模拟verboten边缘。
<?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>
答案 1 :(得分:0)
尝试在滚动视图的底部放置一个填充,以便在底部看到一条白线 - 您的视图确实一直向下滚动,我尝试使用此代码,结果如下:
<?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>
答案 2 :(得分:0)
尝试将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>