android scrollview不会滚动

时间:2014-07-15 12:09:00

标签: android xml android-layout android-scrollview

我的滚动视图中有一些线性布局和一些视图覆盖了整个屏幕。问题是我可以看到我的一个小部件在屏幕下,它不会向下滚动。这是我的xml文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="${relativePackage}.${activityClass}" >

    <ScrollView
        android:id="@+id/mainScrollView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:fillViewport="true"
        android:scrollbars="vertical" >

        <LinearLayout
            android:id="@+id/mainLayout"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical" >

            <RelativeLayout
                android:id="@+id/topLayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" >

                <TextView
                    android:id="@+id/textDateTime"
                    android:layout_width="wrap_content"
                    android:text="@string/nullString"
                    android:textAppearance="?android:attr/textAppearanceLarge"
                    android:textColor="#FFCCFF99"
                    android:textSize="25sp" />

                <LinearLayout
                    android:id="@+id/buttonsLayout"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:layout_margin="5dp"
                    android:orientation="horizontal" >

                    <Button
                        android:id="@+id/buttonReset"
                        style="?android:attr/buttonStyleSmall"
                        android:layout_width="130sp"
                        android:layout_height="40dp"
                        android:background="@drawable/button"
                        android:text="@string/buttonResetText"
                        android:textColor="#000000"
                        android:textSize="20sp" />

                    <Button
                        android:id="@+id/buttonFreeze"
                        style="?android:attr/buttonStyleSmall"
                        android:layout_width="130sp"
                        android:layout_height="40sp"
                        android:layout_marginLeft="5dp"
                        android:background="@drawable/button"
                        android:text="@string/buttonFreezeText"
                        android:textColor="#000000"
                        android:textSize="20sp" />
                </LinearLayout>
            </RelativeLayout>

            <ProgressBar
                android:id="@+id/loadBar"
                style="?android:attr/progressBarStyleLarge"
                android:layout_width="118dp"
                android:layout_height="118dp"
                android:layout_gravity="center" />

            <GridView
                android:id="@+id/sensorsGrid"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_margin="5dp"
                android:background="#FFCCFF99"
                android:gravity="center"
                android:numColumns="6"
                android:stretchMode="none" >
            </GridView>
        </LinearLayout>

    </ScrollView>

</RelativeLayout>

我还在像这样的

代码中将mainView添加到mainLayout
graph = new LineGraphView(this, "GraphViewDemo");
graph.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, 300));
LinearLayout mainLayout = (LinearLayout) findViewById(R.id.mainLayout);
mainLayout.addView(graph);

另一个问题是,如果GridView不垂直适合主布局(因为它更大),则gridView变得可滚动(我不想要),并且下面的GraphView无法看到我不能向下滚动它

更新: 当前的xml

<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="${relativePackage}.${activityClass}"
    android:id="@+id/mainScrollView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true"
    android:scrollbars="vertical" >

        <LinearLayout
            android:id="@+id/mainLayout"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:background="#FF023458"
            android:orientation="vertical" >

            <RelativeLayout
                android:id="@+id/topLayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" >

                <TextView
                    android:id="@+id/textDateTime"
                    android:layout_width="wrap_content"
                    android:layout_height="40dp"
                    android:layout_margin="5dp"
                    android:text="@string/nullString"
                    android:textAppearance="?android:attr/textAppearanceLarge"
                    android:textColor="#FFCCFF99"
                    android:textSize="25sp" />

                <LinearLayout
                    android:id="@+id/buttonsLayout"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:layout_margin="5dp"
                    android:orientation="horizontal" >

                    <Button
                        android:id="@+id/buttonReset"
                        style="?android:attr/buttonStyleSmall"
                        android:layout_width="130sp"
                        android:layout_height="40dp"
                        android:background="@drawable/button"
                        android:text="@string/buttonResetText"
                        android:textColor="#000000"
                        android:textSize="20sp" />

                    <Button
                        android:id="@+id/buttonFreeze"
                        style="?android:attr/buttonStyleSmall"
                        android:layout_width="130sp"
                        android:layout_height="40sp"
                        android:layout_marginLeft="5dp"
                        android:background="@drawable/button"
                        android:text="@string/buttonFreezeText"
                        android:textColor="#000000"
                        android:textSize="20sp" />
                </LinearLayout>
            </RelativeLayout>

            <ProgressBar
                android:id="@+id/loadBar"
                style="?android:attr/progressBarStyleLarge"
                android:layout_width="118dp"
                android:layout_height="118dp"
                android:layout_gravity="center" />

            <GridView
                android:id="@+id/sensorsGrid"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_margin="5dp"
                android:background="#FFCCFF99"
                android:gravity="center"
                android:numColumns="6"
                android:stretchMode="none" >
            </GridView>
        </LinearLayout>
</ScrollView>

2 个答案:

答案 0 :(得分:1)

您不应在GridView内添加ScrollView,因为GridView本身是一个可滚动的视图。另一个容器内的可滚动容器将由父容器接管(反之亦然) - 导致不在屏幕上正确滚动/显示。

提示:您应该将ScrollViewGridView分开。或者用TableLayout替换GridView。

答案 1 :(得分:0)

将滚动视图标记更改为类似的内容,它将适合您。

<ScrollView
        android:id="@+id/mainScrollView"
        android:layout_width="fill_parent"
        android:layout_height="500dp"
        android:fillViewport="true"
        android:scrollbars="vertical" >