2012-07-10 21 views
11

我正在顯示一個表格佈局,因爲我希望表格中的行之間有分隔線。也可以在表格佈局中明確區分列表。請幫助我。表格佈局中的行之間的分隔

以下是我的XML表格佈局:

<?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="wrap_content" 
    android:orientation="vertical" 
    android:paddingBottom="6dip" 
    android:paddingTop="4dip"> 

    <TableLayout 
     android:id="@+id/tablelayout" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:paddingRight="2dip"> 

     <TableRow> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Income"></TextView> 

      <TextView 
       android:layout_width="150px" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="150dp" 
       android:text="Expense"></TextView> 
     </TableRow> 

     <TableRow android:layout_marginTop="30px"> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Household:"></TextView> 

      <TextView 
       android:id="@+id/text50" 
       android:layout_width="150px" 
       android:layout_height="wrap_content" 
       android:text="Household:"></TextView> 
     </TableRow> 


     <TableRow android:layout_marginTop="40px"> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_span="2" 
       android:text="Travel:"></TextView> 

      <TextView 
       android:id="@+id/text51" 
       android:layout_width="150px" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="-250dp" 
       android:text="Travel"></TextView> 
     </TableRow> 

     <TableRow android:layout_marginTop="40px"> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_span="2" 
       android:text="Education:"></TextView> 

      <TextView 
       android:id="@+id/text52" 
       android:layout_width="150px" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="-250dp" 
       android:text="Education"></TextView> 
     </TableRow> 

    </TableLayout> 
</LinearLayout> 
+2

爲u要添加表第2個文字,添加一個圖像(線)/視圖具有文字寬度2dp.this之間的分隔將作爲分隔 – AkashG 2012-07-10 10:36:11

+0

你也可以試試這個。 http://stackoverflow.com/questions/2108456/how-can-i-create-a-table-with-borders-in-android 或 http://stackoverflow.com/questions/7117533 /如何給單元格中的單元格在Androidlay的 – spr 2012-12-20 04:54:09

回答

25

選中此項。它會工作。

<?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="wrap_content" 
    android:background="@android:color/white" 
    android:orientation="vertical" 
    android:paddingBottom="6dip" 
    android:paddingTop="4dip" > 

    <TableLayout 
     android:id="@+id/tablelayout" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:paddingRight="2dip" > 

     <TableRow> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Income" > 
      </TextView> 

      <TextView 
       android:layout_width="150px" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="150dp" 
       android:text="Expense" > 
      </TextView> 
     </TableRow> 

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

      <View 
       android:id="@+id/line1" 
       android:layout_width="match_parent" 
       android:layout_height="1dip" 
       android:layout_weight="1" 
       android:background="#FF909090" 
       android:padding="2dip" /> 
     </TableRow> 

     <TableRow android:layout_marginTop="30px" > 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Household:" > 
      </TextView> 

      <TextView 
       android:id="@+id/text50" 
       android:layout_width="150px" 
       android:layout_height="wrap_content" 
       android:text="Household:" > 
      </TextView> 
     </TableRow> 
     </TableLayout> 

</LinearLayout> 
+0

我們可以做同樣的編程嗎?因爲我正在創建基於編程的佈局。 – AndroidOptimist 2013-09-19 05:13:42

+2

我認爲這不是寫作的方式。如果你有20個錶行,那麼你必須爲分隔符創建20行......我認爲在TableLayout中有標記名爲「android:devider」..但我不知道如何使用它... if有些機構知道請儘快告訴... – 2014-01-09 07:00:56

+0

不要忘記在分隔視圖中添加'android:layout_span =「2」'。 – Roel 2016-03-23 15:11:06

4
View v = new View(this); 
v.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT, 1)); 
v.setBackgroundColor(Color.rgb(51, 51, 51)); 
tr.addView(mTvDate); 
tr.addView(mTvResult); 

tl.addView(tr); 
tl.addView(v); 

from here.

+0

謝謝Vinay Wadhwa..Can你請告訴我,我必須添加此? – 2012-07-10 10:37:51

+0

在兩個textview之間的xml中添加視圖,而不是進行編程 – AkashG 2012-07-10 10:40:05

+0

您可以在使用您在問題中提到的xml的活動中添加此代碼。 – 2012-07-10 10:44:50

1

我覺得你有與TableLayout的背景和行的保證金玩...

+0

這也是我做到的,螞蟻它是最好的解決方案,因爲它避免了佈局中的視圖膨脹。 – olefevre 2013-06-25 04:06:04

0

我已對您的代碼進行了一些更改,並認爲這會幫助您...

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:paddingTop="4dip" 
    android:paddingBottom="6dip" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical">  
<TableLayout 
    android:id="@+id/tablelayout" 
     android:layout_height="wrap_content" 
     android:layout_width="fill_parent" 
     android:paddingRight="2dip"> 

    <TableRow > 
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Income"> 
    </TextView>    
     <TextView    
      android:layout_width="150px" android:layout_height="wrap_content" android:text="Expense" android:layout_marginLeft="150dp"> 
    </TextView> 
    </TableRow> 
<View android:id="@+id/firstDivider" 
     android:layout_height="2dp" 
     android:layout_width="fill_parent" 
     android:background="#FFFFFF" /> 


    <TableRow android:layout_marginTop="30px"> 
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Household:" > 
    </TextView>    
     <TextView    
      android:id="@+id/text50" android:layout_width="150px" android:layout_height="wrap_content" android:text="Household:"> 
    </TextView> 
    </TableRow> 
<View android:id="@+id/firstDivider" 
     android:layout_height="2dp" 
     android:layout_width="fill_parent" 
     android:background="#FFFFFF" /> 



<TableRow android:layout_marginTop="40px"> 
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Travel:" android:layout_span="2"> 
    </TextView>  
     <TextView 
      android:id="@+id/text51" 
      android:layout_width="150px" android:layout_height="wrap_content" android:text="Travel" android:layout_marginLeft="-250dp"> 
    </TextView> 


</TableRow> 


<View android:id="@+id/firstDivider" 
     android:layout_height="2dp" 
     android:layout_width="fill_parent" 
     android:background="#FFFFFF" /> 

    <TableRow android:layout_marginTop="40px"> 
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Education:" android:layout_span="2"> 
    </TextView>  
     <TextView 
      android:id="@+id/text52" 
      android:layout_width="150px" android:layout_height="wrap_content" android:text="Education" android:layout_marginLeft="-250dp"> 
    </TextView> 

</TableRow> 

<View android:id="@+id/firstDivider" 
     android:layout_height="2dp" 
     android:layout_width="fill_parent" 
     android:background="#FFFFFF" /> 


</TableLayout> 
</LinearLayout> 

謝謝....

+0

感謝user4232..But沒有來臨..table佈局崩潰.. – 2012-07-10 11:01:12

3

TableLayout延伸LinearLayout所以你可以在XML中添加分隔。我認爲這會工作當時:

<TableLayout 
     android:id="@+id/basket_summary_table" 
     android:showDividers="middle" 
     android:divider="@drawable/divider_list" 
     android:padding="@dimen/element_large_spacing" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:stretchColumns="0"> 
    </TableLayout> 

我分壓器如下所示:

divider_list.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape android:shape="rectangle" xmlns:android="http://schemas.android.com/apk/res/android"> 
    <size android:height="1dp" /> 
    <solid android:color="@color/list_divider" /> 
</shape> 
10

如果你只是想添加行之間的分隔,然後TableRow division有很好的解決方案。

<TableLayout  
    android:divider="?android:attr/dividerHorizontal" 
    android:showDividers="middle" 
    ... 
+0

Thnx ...超級解決方案..工作像魅力...! – 2017-08-04 10:43:23