【问题标题】:separation between rows in table layout表格布局中的行之间的分隔
【发布时间】:2012-07-09 19:37:35
【问题描述】:

我正在显示一个表格布局,因为我想要表格中的行之间的分隔线。也可以在表格布局中按列分隔。请帮助我。

以下是我的 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>

【问题讨论】:

标签: android tablelayout


【解决方案1】:

检查这个。它会起作用的。

<?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>

【讨论】:

  • 我们可以以编程方式做同样的事情吗?因为我正在创建基于程序的布局。
  • 我认为这不是写的方式。如果您有 20 个表格行,那么您必须为分隔线再创建 20 行.....我认为 TableLayout 中有名为“android:devider”的标签..但我不知道如何使用它...如果有人知道请尽快告诉...
  • 不要忘记将android:layout_span="2" 添加到分隔线视图中。
  • 对我来说就像一个魅力!谢谢
【解决方案2】:

如果您只想在行之间添加分隔线,那么TableRow division 有一个很好的解决方案。

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

【讨论】:

    【解决方案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>
    

    【讨论】:

      【解决方案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.

      【讨论】:

      • 谢谢Vinay Wadhwa..你能告诉我我必须在哪里添加这个吗??
      • 在两个文本视图之间的 xml 中添加一个视图,而不是以编程方式进行
      • 您可以将此代码添加到使用您在问题中提到的 xml 的活动中。
      【解决方案5】:

      我认为您必须使用 TableLayout 的背景和行的边距...

      【讨论】:

      • 我也是这样做的,它是最好的解决方案,因为它避免了布局中的视图膨胀。
      【解决方案6】:

      我对您的代码进行了一些更改,认为这会对您有所帮助...

          <?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>
      

      谢谢....

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-11-15
        • 1970-01-01
        • 2011-02-26
        • 2019-06-13
        • 2022-06-14
        • 1970-01-01
        • 2017-05-23
        相关资源
        最近更新 更多