Android中在ScrollView内使用LinearLayout的困难

4

我有一个布局问题,最后一个线性布局似乎没有完全展开。供您参考,这是我的xml文件:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scrollView1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >


<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/ihealthfirst"
android:orientation="vertical" >

<include
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    layout="@layout/tabsfornutrition" />


<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ImageView
        android:id="@+id/imagefruits"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:contentDescription="@string/vegetables"
        android:paddingBottom="15dp"
        android:paddingLeft="15dp"
        android:paddingRight="15dp"
        android:paddingTop="15dp"
        android:src="@drawable/fruits_logo" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:paddingRight="15dp"
        android:paddingTop="35dp" >

        <TextView
            android:id="@+id/txtApples"
            style="@style/NutritionText"
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_gravity="fill_vertical"
            android:layout_weight="0.50" />

        <Button
            android:id="@+id/btViewApples"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/viewnutritionalfacts" />
    </LinearLayout>
</LinearLayout>


<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_gravity="bottom" >

<TextView
    android:id="@+id/descheader"
    style="@style/DescriptionHeader"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:paddingLeft="15dp"
    android:paddingRight="15dp"
    android:text="@string/description" />


<TextView
    android:id="@+id/fruitDesc"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical|right"
    android:paddingLeft="15dp"
    android:paddingTop="10dp" />

</LinearLayout>

</LinearLayout>

</ScrollView>

在此输入图片描述

如果你能帮我,我会非常感激。谢谢


将TextView的android:layout_width属性从"fill_parent"改为"wrap_content"。 - Mikhaili
你指的是哪个TextView? - user1410081
问题到底是什么?你的截图有什么问题? - PatrickNLT
我的最后一个LinearLayout没有展开到其完整大小。 - user1410081
6个回答

21

就像JavaFX的ScrollPane一样。 - SalutonMondo

1

包含的tabsfornutrition元素具有match_parentlayout_height,并且它是其父级的第一个子元素,因此它显然会占用所有可用空间...

尝试将此元素和其后面的元素设置为wrap_content

<include
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    layout="@layout/tabsfornutrition" />

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

仍然是同样的问题。我的最后一个LinearLayout没有扩展。我尝试使用fillViewport,但是我的最后一个LinearLayout已经消失了。 - user1410081
1
“不扩展”是什么意思?当您滚动时,您能看到最后一个线性布局的2个文本视图吗? - sdabet
我看不到这两个TextView。 - user1410081
那我不知道还有什么别的尝试方法了...我刚刚用样本图像/文本进行了测试,对我来说它是有效的。 - sdabet

0

LinearLayout(和textViews)被设置为wrap_content。将第二个LinearLayout设置为:

android:layout_height="match_parent"

0

我希望你说的是具有描述的LinearLayout,首先我认为你不清楚fill_parent / match_parent / wrap_content的区别,为什么我这么想呢,

因为你将包含布局和同级LinearLayout的高度和宽度都设置为fill_parent。

<includ
  android:layout_width="fill_parent"
  android:layout_height="match_parent"
  layout="@layout/tabsfornutrition" />


<LinearLayout
  android:layout_width="match_parent"
  android:layout_height="match_parent" >

但是您不必担心一个布局会重叠另一个布局。

因此,请查看以下结构,这将使您清楚地了解。 如果没有,请明确更新您的问题,我希望您需要填写具有描述的线性布局。

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scrollView1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >


    <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/ihealthfirst"
    android:orientation="vertical" >

        <include
            android:layout_width="match_parent" 
            android:layout_height="wrap_content"
            layout="@layout/tabsfornutrition" />


        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent" 
            android:layout_weight="1" >

            <ImageView
                android:id="@+id/imagefruits"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:contentDescription="@string/vegetables"
                android:paddingBottom="15dp"
                android:paddingLeft="15dp"
                android:paddingRight="15dp"
                android:paddingTop="15dp"
                android:src="@drawable/fruits_logo" />

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:paddingRight="15dp"
                android:paddingTop="35dp" >

                <TextView
                    android:id="@+id/txtApples"
                    style="@style/NutritionText"
                    android:layout_width="fill_parent"
                    android:layout_height="0dp"
                    android:layout_gravity="fill_vertical"
                    android:layout_weight="0.50" />

                <Button
                    android:id="@+id/btViewApples"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:text="@string/viewnutritionalfacts" />
            </LinearLayout>
        </LinearLayout>


        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_gravity="bottom" >

            <TextView
                android:id="@+id/descheader"
                style="@style/DescriptionHeader"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:paddingLeft="15dp"
                android:paddingRight="15dp"
                android:text="@string/description" />


            <TextView
                android:id="@+id/fruitDesc"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical|right"
                android:paddingLeft="15dp"
                android:paddingTop="10dp" />

        </LinearLayout>

    </LinearLayout>

</ScrollView>

2
如果你在第一个LinearLayout上设置了match_parent,那么把它放在ScrollView中就没有意义了。ScrollView的整个意义在于包裹一个比它自己更大的子元素... - sdabet
那么他应该把ScrollView留空吗? - Lpc_dark

0

ScrollView 只适用于一个子元素,首先定义 ScrollView,然后定义 RelativeLayout,接着使用所需的布局。


-2

这是因为你告诉它在高度上使用wrap_content。应该使用match_parent


你指的是哪一种线性布局? - user1410081

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