如何在布局中创建一个包含两列和12行的表

时间:2013-12-27 08:56:47

标签: android android-layout android-intent android-listview android-fragments

我应该创建一个表,如下面的链接所示,我想以两种方式实现它。

  1. 我应该以静态方式创建一个带边框的表并动态更新内容,我的意思是第一列中的静态月份和使用活动的第二列中的动态值。

  2. 我可以通过提供活动的月份名称和值来动态设置两列。

  3. 我的问题是:

    1. 如何使用白色背景和边框创建此表,如下所示?由于我无法发现任何包含白色背景和边框的博客。

    2. 如何从活动中为表格的每个单元格提供动态值。

    3. table image

3 个答案:

答案 0 :(得分:2)

使用此代码: -

my_drawable.xml(用于边框): -

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

<item>
    <shape android:shape="rectangle" >
        <solid android:color="#B8B9B1" />
    </shape>
</item>
<item
    android:bottom="3px"
    android:left="3px"
    android:right="3px"
    android:top="3px">
    <shape android:shape="rectangle" >
        <solid android:color="#FFFFFF" />
    </shape>
</item>

</layer-list>

的xml: -

<TableLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/my_drawable"
    android:padding="5dp" >

    <TableRow
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/home"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:background="@drawable/my_drawable"
            android:gravity="center"
            android:padding="15dip"
            android:text="Months" />

        <TextView
            android:id="@+id/status"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:background="@drawable/my_drawable"
            android:gravity="center"
            android:padding="15dip"
            android:text="Number of Visits" />
    </TableRow>

    <TableRow
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:layout_width="0dp"
            android:layout_weight="1"
            android:background="@drawable/my_drawable"
            android:gravity="center"
            android:padding="15dip"
            android:text="January" />

        <TextView
            android:layout_width="0dp"
            android:layout_weight="1"
            android:background="@drawable/my_drawable"
            android:gravity="center"
            android:padding="15dip"
            android:text="1" />
    </TableRow>

    <TableRow
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:layout_width="0dp"
            android:layout_weight="1"
            android:background="@drawable/my_drawable"
            android:gravity="center"
            android:padding="15dip"
            android:text="Februrary" />

        <TextView
            android:layout_width="0dp"
            android:layout_weight="1"
            android:background="@drawable/my_drawable"
            android:gravity="center"
            android:padding="15dip"
            android:text="" />
    </TableRow>
</TableLayout>

我刚刚添加了3行。我只是告诉你如何操作。 对于白色边框以及创建Layer-list drawable并将其设置为tablelayout所需的所有内容。 享受..!

答案 1 :(得分:1)

有很多方法可以做到这一点...... 我能想到的最好的就是使用ListView 然后使用9补丁为其添加边框 另外9个补丁可以由其(自定义)行元素使用(实际上是两个textview)。

这里是外部和内部边框所需的9个补丁:

enter image description here(外部 - 表格边框)

enter image description here(内部 - 单元格边框)

将这些图像保存在res / drawable文件夹中,扩展名为 .9.png
然后将它们添加为您的android:background属性。

关于如何制作自定义ListView,在Google上搜索 - 有很多例子。

答案 2 :(得分:0)

与Klaus66一样,有很多方法可以做到。

当我遇到类似的情况时,我在xml中创建了相应的表格布局,现在是棘手的部分(因为你没有CSS中的表格边框),你可以使用纯xml样式和drawable创建具有背景和边框的表格单元格。

尝试谷歌搜索列表图层,这是我使用的示例:(表格单元格底部和左边框1dp宽度)

    <?xml version="1.0" encoding="utf-8"?>
  <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
   <item> 
 <shape android:shape="rectangle">
    <solid android:color="#004536" /> 
  </shape>
  </item>   
   <item android:left="1dp" android:bottom="1dp"  > 
      <shape android:shape="rectangle">
        <solid android:color="#25272f" /> 
     </shape> 
  </item>    
 </layer-list>

只需将此drawable设置为表格单元格的背景。(您的行中的textView-s,列......)。

编辑1:至于为您的单元格提供值,在您的活动中使用findViewById(R.id ...)来使您在布局中使用的textViews成为您喜欢的地方值。