添加ScrollView会将整个布局推到一半的视图大小?

4

我有一个这样的布局..

<LinearLayout android:id="@+id/LinearLayout01"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:background="#333333" android:orientation="vertical" android:layout_width="match_parent">
<ScrollView android:layout_width="match_parent" android:id="@+id/scrollView1" android:layout_height="match_parent">
    <LinearLayout android:id="@+id/linearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical">
        <FrameLayout android:layout_width="fill_parent" android:layout_height="45dip" android:id="@+id/frameLayout1">
            <EditText android:autoText="true" android:text="EditText" android:hint="@string/searchBox" android:singleLine="true" android:layout_height="fill_parent" android:id="@+id/qbox" android:layout_width="fill_parent"></EditText>
            <Button android:layout_height="fill_parent" android:text="Button" android:layout_width="45dip" android:background="@drawable/search" android:layout_gravity="right" android:id="@+id/search"></Button>
        </FrameLayout>
        <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical">
            <LinearLayout android:id="@+id/linearLayout2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center">
                <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingRight="5dip" android:id="@+id/logo" android:src="@drawable/icon" android:paddingLeft="10dip"></ImageView>

            </LinearLayout>
            <com.app.org.HorizontialListView android:layout_width="wrap_content" android:layout_height="150dip" android:id="@+id/hlist" android:background="#FFFFFF"></com.app.org.HorizontialListView>
        </LinearLayout>
        <LinearLayout android:layout_width="fill_parent" android:layout_height="40dip" android:paddingLeft="15dip" android:id="@+id/buttonlist" style="@style/tabBar"></LinearLayout>
        <ListView android:layout_width="fill_parent" android:background="#FFFFFF" android:id="@+id/searchresults" android:cacheColorHint="#ffffff" android:layout_height="match_parent" android:scrollbars="none"></ListView>
    </LinearLayout>
</ScrollView>
</LinearLayout>

我刚刚添加了ScrollView,但出现了一个问题,它似乎将整个布局推到了屏幕大小的一半左右,请问有人知道为什么吗?

下面是添加ScrollView对布局产生的影响的示意图。

Layout before ScollView
|---------------------|
|                     |
|                     |
|                     |
|                     |
|                     |
|                     |
|                     |
|                     |
|                     |
|                     |
|                     |
|                     |
|---------------------|

Layout after ScollView
|---------------------|
|                     |
|                     |
|                     |
|                     |
|                     |
|                     |
|                     |
|---------------------|
4个回答

21

尝试在滚动视图上设置Full Viewport = true


很好,这确实解决了高度问题,但遗憾的是我的整个线性布局在ScrollView中无法滚动。我只能滚动ListView而不能滚动整个布局。:-(你有什么想法如何解决这个问题吗? - Skizit
不应该在ScrollView中放置可滚动的项,这是最佳实践,您可以相应地调整布局,仅使ListView可滚动,其余内容保持在屏幕上,或者您可以使用ListView方法addHeaderView在列表视图上添加一个标头,它将随着滚动而滚动。 - BFil
这是 android:fillViewport="true" - Shailendra Madda

2

在您的ScrollView中将android:fillViewport属性设置为true

android:layout_height = "match_parent"不被ScrollView支持/忽略。


2
尝试将以下内容添加到您的滚动视图标记中:
 android:fillViewport="true"

此外,您可能可以将ScrollView元素作为父对象,而不是LinearLayout。

ScrollView 只能有一个子元素。 - Andy McSherry

1
  1. ScrollView 内部的 LinearLayout 的高度从 match_parent 改为 wrap_content
  2. 不能将 ListView 放在 ScrollView 中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接