如何在表格布局中添加滚动视图?

Posted

技术标签:

【中文标题】如何在表格布局中添加滚动视图?【英文标题】:How to add scrollview in Table Layout? 【发布时间】:2017-08-14 01:01:14 【问题描述】:

这是我第一次使用 Scrollview,我想用 tablelayout 3x8 行制作应用程序。行的高度和宽度相同,表格可以垂直滚动。我怎么能在 xml 布局中做到这一点?感谢您的帮助

<ScrollView android:id="@+id/layout"
    android:layout_
    android:scrollbars="vertical"
    android:layout_
    android:layout_marginTop="5dip"
    android:scrollbarStyle="outsideInset"
    android:fillViewport="true"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <LinearLayout
        android:layout_
        android:layout_
        android:orientation="vertical">
<TableLayout
    android:layout_
    android:layout_
    android:stretchColumns="*"
    >
    <TableRow
        android:layout_weight="1"
        android:gravity="center">
        <Button android:text="Button" android:layout_ android:layout_/>
        <Button android:text="Button" android:layout_ android:layout_/>
        <Button android:text="Button" android:layout_ android:layout_/>
    </TableRow>
    <TableRow
        android:layout_weight="1"
        android:gravity="center">
        <Button android:text="Button" android:layout_ android:layout_/>
        <Button android:text="Button" android:layout_ android:layout_/>
        <Button android:text="Button" android:layout_ android:layout_/>
    </TableRow>
    <TableRow
        android:layout_weight="1"
        android:gravity="center">
        <Button android:text="Button" android:layout_ android:layout_/>
        <Button android:text="Button" android:layout_ android:layout_/>
        <Button android:text="Button" android:layout_ android:layout_/>
    </TableRow>
    <TableRow
        android:layout_weight="1"
        android:gravity="center">
        <Button android:text="Button" android:layout_ android:layout_/>
        <Button android:text="Button" android:layout_ android:layout_/>
        <Button android:text="Button" android:layout_ android:layout_/>
    </TableRow>
</TableLayout>

<TableLayout
    android:layout_
    android:layout_
    android:stretchColumns="*"
    >
    <TableRow
        android:layout_weight="1"
        android:gravity="center">
        <Button android:text="Button" android:layout_ android:layout_/>
        <Button android:text="Button" android:layout_ android:layout_/>
        <Button android:text="Button" android:layout_ android:layout_/>
    </TableRow>
    <TableRow
        android:layout_weight="1"
        android:gravity="center">
        <Button android:text="Button" android:layout_ android:layout_/>
        <Button android:text="Button" android:layout_ android:layout_/>
        <Button android:text="Button" android:layout_ android:layout_/>
    </TableRow>
    <TableRow
        android:layout_weight="1"
        android:gravity="center">
        <Button android:text="Button" android:layout_ android:layout_/>
        <Button android:text="Button" android:layout_ android:layout_/>
        <Button android:text="Button" android:layout_ android:layout_/>
    </TableRow>
    <TableRow
        android:layout_weight="1"
        android:gravity="center">
        <Button android:text="Button" android:layout_ android:layout_/>
        <Button android:text="Button" android:layout_ android:layout_/>
        <Button android:text="Button" android:layout_ android:layout_/>
    </TableRow>
</TableLayout>
    </LinearLayout>
</ScrollView>

【问题讨论】:

使用 TabLayout 属性看看 :app:tabMode="scrollable" 可能会有帮助。。 谢谢先生,它解决了我的部分问题@User6829548 欢迎@Denny.. 【参考方案1】:

这是您必须手动指定 TableRow 高度的方法之一,以便您可以按如下方式实现此目的

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_
    android:layout_
    >
    <ScrollView android:id="@+id/layout"
        android:layout_
        android:scrollbars="horizontal|vertical"
        android:layout_
        android:layout_marginTop="5dip"
        android:scrollbarStyle="outsideInset"
        android:fillViewport="true"
        xmlns:android="http://schemas.android.com/apk/res/android">
        <LinearLayout
            android:layout_ android:orientation="vertical"
            android:layout_>

            <TableRow
                android:gravity="center"
                android:layout_
                android:layout_>
                <Button android:layout_weight="1" android:text="Button" android:layout_ android:layout_/>
                <Button android:layout_weight="1" android:text="Button" android:layout_ android:layout_/>
                <Button android:layout_weight="1" android:text="Button" android:layout_ android:layout_/>
            </TableRow>
            <TableRow
                android:gravity="center"
                android:layout_
                android:layout_>
                <Button android:layout_weight="1" android:text="Button" android:layout_ android:layout_/>
                <Button android:layout_weight="1" android:text="Button" android:layout_ android:layout_/>
                <Button android:layout_weight="1" android:text="Button" android:layout_ android:layout_/>
            </TableRow>
            <TableRow
                android:gravity="center"
                android:layout_
                android:layout_>
                <Button android:layout_weight="1" android:text="Button" android:layout_ android:layout_/>
                <Button android:layout_weight="1" android:text="Button" android:layout_ android:layout_/>
                <Button android:layout_weight="1" android:text="Button" android:layout_ android:layout_/>
            </TableRow>
            <TableRow
                android:gravity="center"
                android:layout_
                android:layout_>
                <Button android:layout_weight="1" android:text="Button" android:layout_ android:layout_/>
                <Button android:layout_weight="1" android:text="Button" android:layout_ android:layout_/>
                <Button android:layout_weight="1" android:text="Button" android:layout_ android:layout_/>
            </TableRow>
            <TableRow
                android:gravity="center"
                android:layout_
                android:layout_>
                <Button android:layout_weight="1" android:text="Button" android:layout_ android:layout_/>
                <Button android:layout_weight="1" android:text="Button" android:layout_ android:layout_/>
                <Button android:layout_weight="1" android:text="Button" android:layout_ android:layout_/>
            </TableRow>
            <TableRow
                android:gravity="center"
                android:layout_
                android:layout_>
                <Button android:layout_weight="1" android:text="Button" android:layout_ android:layout_/>
                <Button android:layout_weight="1" android:text="Button" android:layout_ android:layout_/>
                <Button android:layout_weight="1" android:text="Button" android:layout_ android:layout_/>
            </TableRow>
            <TableRow
                android:gravity="center"
                android:layout_
                android:layout_>
                <Button android:layout_weight="1" android:text="Button" android:layout_ android:layout_/>
                <Button android:layout_weight="1" android:text="Button" android:layout_ android:layout_/>
                <Button android:layout_weight="1" android:text="Button" android:layout_ android:layout_/>
            </TableRow>
            <TableRow
                android:gravity="center"
                android:layout_
                android:layout_>
                <Button android:layout_weight="1" android:text="Button" android:layout_ android:layout_/>
                <Button android:layout_weight="1" android:text="Button" android:layout_ android:layout_/>
                <Button android:layout_weight="1" android:text="Button" android:layout_ android:layout_/>
            </TableRow>

        </LinearLayout>
    </ScrollView>

</LinearLayout>  

实现此目的的另一种方法是使用GridViewRecyclerViewRecyclerView 是实现这一目标的最简单方法。我希望它对你有用。谢谢你

【讨论】:

谢谢您,先生,这对我有很大帮助。【参考方案2】:

ScrollView 中删除LinearLayout 并尝试,如果不起作用,请使用此

<ScrollView
    android:layout_
    android:layout_>

    <TableLayout
        android:layout_
        android:layout_>

        <TableRow
            android:layout_
            android:layout_ >
            <EditText
                android:layout_weight="1"
                android:background="#F00"
                android:layout_
                android:layout_ />
            <EditText
                android:layout_weight="1"
                android:background="#FF0"
                android:layout_
                android:layout_ />
            <EditText
                android:layout_weight="1"
                android:background="#F0F"
                android:layout_
                android:layout_ />
        </TableRow>

        <TableRow
            android:layout_
            android:layout_
            android:layout_marginTop="100dp">
            <EditText
                android:layout_weight="1"
                android:background="#F00"
                android:layout_
                android:layout_ />
            <EditText
                android:layout_weight="1"
                android:background="#FF0"
                android:layout_
                android:layout_ />
            <EditText
                android:layout_weight="1"
                android:background="#F0F"
                android:layout_
                android:layout_ />
        </TableRow>

        <TableRow
            android:layout_
            android:layout_
            android:layout_marginTop="100dp">
            <EditText
                android:layout_weight="1"
                android:background="#F00"
                android:layout_
                android:layout_ />
            <EditText
                android:layout_weight="1"
                android:background="#FF0"
                android:layout_
                android:layout_ />
            <EditText
                android:layout_weight="1"
                android:background="#F0F"
                android:layout_
                android:layout_ />
        </TableRow>

        <TableRow
            android:layout_
            android:layout_
            android:layout_marginTop="100dp">
            <EditText
                android:layout_weight="1"
                android:background="#F00"
                android:layout_
                android:layout_ />
            <EditText
                android:layout_weight="1"
                android:background="#FF0"
                android:layout_
                android:layout_ />
            <EditText
                android:layout_weight="1"
                android:background="#F0F"
                android:layout_
                android:layout_ />
        </TableRow>

        <TableRow
            android:layout_
            android:layout_
            android:layout_marginTop="100dp">
            <EditText
                android:layout_weight="1"
                android:background="#F00"
                android:layout_
                android:layout_ />
            <EditText
                android:layout_weight="1"
                android:background="#FF0"
                android:layout_
                android:layout_ />
            <EditText
                android:layout_weight="1"
                android:background="#F0F"
                android:layout_
                android:layout_ />
        </TableRow>

        <TableRow
            android:layout_
            android:layout_
            android:layout_marginTop="100dp">
            <EditText
                android:layout_weight="1"
                android:background="#F00"
                android:layout_
                android:layout_ />
            <EditText
                android:layout_weight="1"
                android:background="#FF0"
                android:layout_
                android:layout_ />
            <EditText
                android:layout_weight="1"
                android:background="#F0F"
                android:layout_
                android:layout_ />
        </TableRow>
    </TableLayout>
</ScrollView>

【讨论】:

谢谢您,先生,我尝试删除我的线性布局,但它不起作用。谢谢你的回答【参考方案3】:

不要使用relative layout 以外的任何布局。我不知道它是如何工作的,但它确实有效。[至少对我来说]

【讨论】:

以上是关于如何在表格布局中添加滚动视图?的主要内容,如果未能解决你的问题,请参考以下文章

IOS - 如何使用自动布局有一个可滚动的表格视图标题

如何实现在动态布局中添加更多视图在android中实现滚动视图

如何在相对布局中添加固定标题和滚动视图表行?

表格布局可以同时具有水平和垂直滚动视图吗

如何在滚动视图中进行多个表格视图

如何使用自动布局设置滚动视图内容大小?