10

我正在尝试为我的应用程序中的某些项目创建一个表格/网格,我希望在每个单元格周围都有一个边框来划分项目,并使设置与项目保持一致的关联。这个应用程序将用于工业环境中,可能会有不熟悉 Android 的人需要使用它,因此尽量让它变得简单。

表格/网格将包含TextViewEditTextSpinnerButton, 并且也可以滚动(通过ScrollView父级)。

我读到了GridView,发现它(似乎)只能以编程方式获取项目,如果我错了,请纠正我。我觉得这是不必要的,因为我知道我想要什么以及在哪里。另外,我还没有尝试以编程方式将项目添加到布局中,所以我想我会先尝试其他选项。此外,如果自动显示边界线,或者您是否可以显示它们,GridView文档并没有说明一种或另一种方式。

我从 a 开始,TableLayout并且能够使除边界线之外的所有东西都可以工作。我试图android:divider得到线路,但没有奏效。我的一个想法是创建一堆TextView具有黑色背景和~2dp 宽度/高度的 s 来制作我自己的边框线。不过,这感觉像是一种巨大的浪费。然后我还阅读了TableLayout 文档,发现:“TableLayout 容器不会为其行、列或单元格显示边框线。”

然后我尝试了GridLayout,结果与TableLayout. 我试过了paddingmargins也没有用。此外,GridLayout 文档指出:“网格由一组无限细的线组成,这些线将查看区域分成单元格。”

我的问题是:

  1. 是否有我错过的属性TableLayout或者GridLayout会通过 xml 给我边界线?

  2. 如果没有,那么GridView会给我我想要的台词吗?

  3. 我能否将我想要的所有以前提到的项目添加到GridView?

4

3 回答 3

10

实际上,我可以通过android:background="#000000"GridLayout视图中设置,然后在子项中设置android:background="#8CDD81"(只是一些绿色)并结合android:layout_margin="2dp"我能够获得我想要的“网格”线来实现所需的外观。不过,感谢 CommonsWare 让我想到了一个新的方向,最终变成了一个解决方案。

编辑: 这并不像预期的那样工作。您需要android:layout_alignLeft/Right这些只能通过RelativeLayout才能获得子项目的正确宽度。还没有使用这个想法测试这个,child items在.RelativeLayoutGridLayout

于 2013-04-24T19:40:04.213 回答
4

是否有我在 TableLayout 或 GridLayout 中错过的属性会通过 xml 给我边框线?

不。

如果不是,那么 GridView 会给我想要的线条吗?

不。

我能否将我想要的所有先前提到的项目添加到 GridView 中?

是的,虽然像 a 这样的东西有多好用Spinner,我不能说。

最简单的方法,在我的脑海中,给你你想要的线条是让每个单元格TableLayout或者GridLayout是一些包含该单元格的小部件的容器,在那里你给容器一个背景是你的线条. AShapeDrawable可以在 XML 中为该背景定义,它可以根据单元格的实际要求很好地调整大小。

于 2013-04-24T18:39:03.487 回答
1

对于未来的访客,这就是我的做法TableLayout

表.xml

<TableLayout android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:background="#969696">
        <!-- table heading -->
        <TableRow>
            <Button android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Name"
                android:background="#d2d2d2"
                android:layout_margin="1dp"
                />
            <Button android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Address"
                android:background="#d2d2d2"
                android:layout_margin="1dp"
                />
        </TableRow>
        <!-- table data -->
        <TableRow>
            <TextView android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Ahtisham"
                android:layout_margin="1dp"
                android:background="#f1f1f1"
                />
            <TextView android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Kashmir"
                android:layout_margin="1dp"
                android:background="#f1f1f1"
                />
        </TableRow>            
 </TableLayout>
于 2020-03-28T09:31:54.187 回答