【问题标题】:how to create a table with two columns and 12 rows in layout [closed]如何在布局中创建具有两列和 12 行的表 [关闭]
【发布时间】:2013-12-27 08:56:47
【问题描述】:

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

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

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

我的问题是:

  1. 如何创建这个带有白色背景和边框的表格,如下所示?因为我找不到任何包含白色背景和边框的表格的博客。

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

【问题讨论】:

  • 请展示一些代码来动态更新行。另外请看我的回答

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


【解决方案1】:

使用此代码:--

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 行。我只是告诉你如何去做。 对于白色边框和所有您需要创建图层列表可绘制对象并将其设置为您的表格布局。 享受..!

【讨论】:

  • Kailash Dabhi,如上所述,用纯色设置边框和用白色设置 textview 对我来说是个大问题。对于彩色背景,您的帖子很高兴知道。
  • 所以你想要和图片完全一样的方式?
  • 是的,但我说的表格应该是可调整大小的,我的意思是它不应该占据整个屏幕。
  • 立即查看更新答案
  • 这完全解决了我的问题
【解决方案2】:

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

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

(外部 - 表格边框)

(内部 - 单元格边框)

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

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

【讨论】:

  • 我是安卓新手,我听不懂你说什么!!我知道如何创建列表视图,但我对 9 补丁一无所知
  • 这是提供可拉伸图像的一种非常方便的方式。如果您愿意,我可以为您提供这些。
  • 谢谢你能发布一些演示。
  • 我会尝试用 Kailash Dabhi 的答案来解决,如果这对我不起作用,那么正如你所说,我会按照你所说的去做。谢谢:)
  • 是的,但这是对布局的浪费......这将导致更重的组合。这就是为什么我说我能想到的最好的方法是一个非常轻量级的 ListView 控件。
【解决方案3】:

就像 Klaus66 说的,有很多方法可以做到。

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

尝试 google-ing 列表层,这是我使用的一个示例:(底部和左侧边框为 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>

只需将此可绘制对象设置为表格单元格的背景。(行、列中的 textView-s...)。

编辑 1:至于为您的单元格提供值,在您的活动中使用 findViewById(R.id...) 来获取您在布局中使用的 textViews 一个您喜欢的位置值。

【讨论】:

  • 对于彩色背景,我找到了一些类似的例子,就像你在上面发布的那样,但是对于带有实线边框的白色背景,很难设置。
  • 是什么导致了问题?白色也是一种颜色 :) 使用什么颜色作为背景无关紧要(white->#ffffff),只是要小心不要使用透明。
  • JanBo 正如你提到的白色#ffffff 适合白色背景,但是对于那个纯色边框,我不能使用其他颜色。
  • 使用这个图层列表,你为边框和背景选择了不同的颜色?
  • 除非你想有一个白色的背景,和你的图片一样的白色边框,只有那些灰色的阴影,那么也许最好的办法是使用9patch,这对你来说会更容易。
猜你喜欢
  • 2020-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-15
  • 1970-01-01
  • 2022-08-17
  • 2016-08-17
相关资源
最近更新 更多