在Android中实现表视图

时间:2011-12-12 17:03:47

标签: java android

  

可能重复:
  Android table view

我和一年前的asked here几乎有同样的问题 - 如何以一种很好的方式实现表视图小部件,比如this screenshot。这个问题没有一个好的答案,所以重新发布。

我使用ListView作为其行LinearLayout,其中包含多个TextView元素和一个ImageView。但问题是每行在列宽方面完全独立于其他行。如果一行中的列的文本比另一行中的文本长,则两行不会垂直对齐。并且GridView似乎不适合我的情况,因为它旨在显示存储在列表中的同质数据,并将其显示在列中 - 如图片网格。知道如何实现这一点吗?感谢。

更新 好的,我刚刚找到了解决方案here。在我的表格行的线性布局中,尽管设置了android:layout_weight,但我错误地将android:layout_width设置为wrap_content。将其设置为0dip使得LinearLayout中的所有TextView在每一行中具有相同的宽度。这是我的行的例子:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:padding="6dip">
<TextView
    android:id="@+id/toptext"
    android:layout_width="0dip"
    android:layout_height="fill_parent"
    android:layout_weight="2"
    android:textSize="24sp"
/>
<TextView
    android:id="@+id/bottomtext"
    android:layout_width="0dip"
    android:layout_height="fill_parent"
    android:layout_weight="3"
    android:textSize="24sp" 
/>
<ImageView
    android:id="@+id/play"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:src="@drawable/play_1"
    android:clickable="true"
/>
</LinearLayout>

1 个答案:

答案 0 :(得分:0)

要计算所需的单元格宽度,表格必须根据数据知道其所有行和单元格宽度。 ListView不会立即知道所有信息,因此无法进行此类计算。这是两个解决方案,恕我直言。

  1. 定义ListView行项目的固定宽度。这种方法将消耗尽可能低的资源,并且能够支持无限列表。
  2. TableLayout的行为与ListView相似(至少在视觉上)。 Here is我的答案如何实现它。但是这个解决方案只有在表没有很多行时才会很好(我认为&lt; 100是好的),因为它会立即加载所有日期,甚至在特定时间内看不见。