2011-12-12 51 views
0

可能重複:
Android table view實施表視圖中的Android

我有相當多的是asked here一年前同樣的問題 - 如何實現在一個不錯的方式表視圖控件,就像在this screenshot。這個問題沒有很好的答案,所以轉貼。

我用ListView作爲其行,其中包含幾個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> 
+0

jquery mobile help?只是一個想法 – visista

+0

你應該閱讀佈局。 RelativeLayout,LinearLayout,GridLayout等等。它們被組合在一起,形成你在那裏看到的佈局。我可以給你一些線索(我還沒有編碼android幾個月......):你可以很明顯地看到他​​們在這種情況下使用了一個帶有5列的GridLayout(或者佈局,他們已經爲每列分配了權重)將文本分成最多4個字符或任何你喜歡和適合的字符。這是很多方法來實現這個 – LuckyLuke

+0

正如GrAnd指出的那樣Layouts並不意味着要顯示大量的數據,這是我的情況不幸的。 @visista我最初嘗試用Sencha Touch和這個項目的phonegap,但原型使用的RAM數量是不可接受的(22Mb),所以我決定去土生土長。 – SimpleMan

回答

0

要計算單元格的所需寬度,表格必須根據數據知道其所有行和單元格的寬度。 ListView不會立即知道所有信息,因此無法進行此類計算。這兩個解決方案,恕我直言。

  1. 定義ListView行項目的固定寬度。這種方法將消耗盡可能低的資源,並支持無限列表。
  2. 使TableLayout表現得像ListView(至少在視覺上)。 Here is我的回答如何實現它。但是,只有當表沒有很多行時(< 100是好的,我認爲),這個解決方案纔是正確的,因爲它會一次加載所有日期,甚至在特定時間內不可見。
+0

感謝您的回答。我非常喜歡第一種選擇,因爲我需要它來擴展到大量的數據。固定寬度的方法有點令我擔心,因爲我會將我的應用綁定到特定的屏幕分辨率,並且有很多不同分辨率的Android手機。但我想我可以通過迭代數據來實現一些代碼,以在運行時計算每列的寬度。 – SimpleMan

+0

您不需要執行固定的像素寬度,可以使用「LinearLayout」執行「固定」的百分比寬度,以及設置權重以模擬列。 – kabuko

+0

我實際上正在爲LinearLayout中的項目設置weghts,但項目仍然未對齊。 – SimpleMan