7

我无法让 GridLayout 水平滚动。

我发现了一个类似的问题Gridlayout + ScrollView。我试过那个方法,但是没有用。

它削减了许多表(因为它应该显示从 1 到 20 的所有表)。

这是xml文件

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

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

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:padding="16dp" >

            <android.support.v7.widget.GridLayout
                android:id="@+id/table_mapGrid"
                android:layout_width="250dp"
                android:layout_height="wrap_content" />
        </LinearLayout>
    </ScrollView>

    <include layout="@layout/cell_list_loading" />

    <TextView
        android:id="@+id/table_errorView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginLeft="20dp"
        android:text="@string/message_error_connection"
        android:visibility="invisible" />

</FrameLayout>

我想显示动态内容,改变列数和行数,表格之间可能有空格。这我已经完成了,但问题是当 GridLayout 的宽度变得大于其容器的宽度时,我想使用水平滚动来解决这个问题,但它似乎不起作用......

有什么建议吗?

4

2 回答 2

11

好吧,我找到了解决方案

看起来 android ScrollView 像 VerticalScrollView 一样工作,而且仅此而已(名称不像 Horizo​​ntalScrollView 那样直观)。

因此,要使某些东西可以垂直和水平滚动,您需要在 Horizo​​ntalScrollView 中嵌套一个 (Vertical)ScrollView,或者反过来,像这样

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <HorizontalScrollView
        android:layout_width="wrap_content"
        android:layout_height="match_parent">

            <!-- Your content here -->

     </HorizontalScrollView>
</ScrollView>
于 2013-03-09T21:12:45.223 回答
1

嵌套的 Horizo​​ntalScrollView / ScrollView 将不允许您同时滚动两个方向。我遇到了这个问题并为此创建了一个自定义组件,如果它可以帮助任何人,这里是链接:

https://gist.github.com/androidseb/9902093

于 2014-03-31T21:20:45.840 回答