我正在尝试为我的应用程序中的某些项目创建一个表格/网格,我希望在每个单元格周围有一个边框来划分项目,并将设置与项目保持一致。这个应用程序将用于工业环境中,可能有不熟悉Android的人需要使用它,因此试图让它尽可能简单。
表/网格将包含TextView
,EditText
,Spinner
和Button
,并且还可以滚动(通过ScrollView
父级)。< / p>
我读到了GridView
并发现它(似乎)只能以编程方式获取项目,如果我错了请纠正我。我觉得这是不必要的,因为我知道我想要什么,在哪里。此外,我还没有尝试以编程方式添加项目到布局,所以我想我会先尝试其他选项。此外,GridView
documentation如果自动显示边框线,或者根本无法显示边框线,则不会说出这种方式。
我从一个TableLayout
开始,并且能够获得除边界线以外的所有内容。我试过android:divider
来获取线条,但这不起作用。我有一个想法是创建一堆具有黑色背景和~2dp宽度/高度的TextView
s来制作我自己的边界线。这感觉就像是一个巨大的浪费。然后我还阅读TableLayout documentation并发现:“TableLayout容器不显示其行,列或单元格的边框线。”
然后我尝试了GridLayout
并获得了与TableLayout
相同的结果。我尝试了padding
和margins
,但都没有效果。此外,GridLayout documentation状态:“网格由一组无限细线组成,将观看区域分隔为单元格。”
我的问题是:
我在TableLayout
或GridLayout
错过了通过xml给我边框线的遗产吗?
如果不是,那么GridView
会给我我想要的台词吗?
我是否可以将所有以前提到的项目添加到GridView
?
答案 0 :(得分:8)
我实际上能够通过在android:background="#000000"
视图中设置GridLayout
然后在我设置android:background="#8CDD81"
(只是一些绿色)的子项目中实现所需的外观与android:layout_margin="2dp"
我能够获得我想要的“网格”线。感谢CommonsWare让我思考一个新的方向,转变为一个解决方案。
修改强>
这不像预期的那样有效。您需要android:layout_alignLeft/Right
只能通过RelativeLayout
获取,以便在子项上获得正确的宽度。尚未在child items
内的RelativeLayout
内使用GridLayout
这个想法对此进行测试。
答案 1 :(得分:5)
我在TableLayout或GridLayout中错过了一个可以通过xml给我边框线的声明吗?
没有
如果不是,那么GridView会给我我想要的行吗?
没有
我是否可以将所有以前提到的项目添加到GridView?
是的,虽然像Spinner
这样的东西有多好用,但我不能说。
最简单的方法,在我的头顶,给你你寻找的行是让TableLayout
或GridLayout
的每个单元格成为包含小部件的容器。单元格,在其中为容器提供背景,即行。可以在XML中为该背景定义A ShapeDrawable
,根据单元格的实际要求,可以很好地调整大小。
答案 2 :(得分:0)
对于以后的访问者,这就是我使用TableLayout
的方法:
table.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>