如何使动态一行7列具有水平滚动

时间:2017-11-15 00:35:27

标签: java android xml android-layout

所以我一直在研究我的android项目,布局已经让我,我无法弄清楚最好做什么这样的事情。 目前我的XML看起来像这样。 我想要做的是有7列,一行填充textview。我正在查看网格视图,但似乎网格的整个点是滚动多个行。我如何实现这种布局?

 <android.support.constraint.ConstraintLayout
    android:id="@+id/ConstraintLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

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

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

            <TextView
                android:id="@+id/foodmenuexample"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="TextView" />

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

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

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

                        <TextView
                            android:id="@+id/textView9"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:text="TextView" />

                        <TextView
                            android:id="@+id/textView10"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:text="TextView" />
                    </LinearLayout>

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

                        <TextView
                            android:id="@+id/textView8"
                            android:layout_width="fill_parent"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:text="TextView" />
                    </LinearLayout>

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

                        <TextView
                            android:id="@+id/textView11"
                            android:layout_width="fill_parent"
                            android:layout_height="wrap_content"
                            android:ellipsize="end"
                            android:maxLines="1"
                            android:text="123456789123456789123456789123456789123456789123456789123456789" />
                    </LinearLayout>

                </LinearLayout>
            </HorizontalScrollView>

            <TextView
                android:id="@+id/textView12"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="TextView" />

        </LinearLayout>
    </ScrollView>
</android.support.constraint.ConstraintLayout>

1 个答案:

答案 0 :(得分:0)

答案是......这取决于。为简单起见,您可以使用 GridLayout ,如果您在视图中拥有所有数据,这将很有效。 但是,如果您希望从数据库加载数据,或者存在不确定数量的列,那么gridview是您在水平滚动视图中最好的选择。您可以将行数设置为1,并以编程方式设置列数。

示例:

GridView gridView = (GridView) findViewById(R.id.gridview);
gridView.setNumColumns(numOfColumns);

Gridview更复杂,因为你必须使用适配器,你可以在这里了解:

https://developer.android.com/guide/topics/ui/layout/gridview.html

但是,如果您正在寻找静态简单性,那么您可以这样做:

 <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout 
    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">

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

        <GridLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:rowCount="1"
            android:columnCount="7">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="15dp"
                android:text="Lots of text on this one" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="15dp"
                android:text="Some text on this one" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="15dp"
                android:text="Textview3" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="15dp"
                android:text="Textview4" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="15dp"
                android:text="Textview5" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="15dp"
                android:text="Textview6" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="15dp"
                android:text="Textview7" />


        </GridLayout>
    </HorizontalScrollView>


</android.support.constraint.ConstraintLayout>