【问题标题】:How to draw horizontal and vertical line in Table layout如何在表格布局中绘制水平线和垂直线
【发布时间】:2016-02-06 04:47:43
【问题描述】:

我想要在表格行内绘制一条垂直和水平线

我无法附上图片

我尝试在表格行中围绕TextView 画线,但线连接不正确 下面是我的 xmlstyle

 <TableLayout
    android:id="@+id/traningprogram_tabla_monday"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:stretchColumns="0,1,2,3"
     >

            <TableRow
                android:id="@+id/traningprogram_tableRow_mondayHeading"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" 

                >

                <TextView
                    android:id="@+id/traningprogram_textView_mondayheadingWeek"
                    android:layout_width="0dip"
                      android:layout_weight="1"
                    android:layout_height="wrap_content"
                    android:padding="5dp"
                    android:textSize="12dp"
                    android:text="TextView" />

                <TextView
                    android:id="@+id/traningprogram_textView_mondeyheadingWeekName"
                    android:layout_width="0dp"
                    android:layout_height="25dp"
                    android:layout_weight="1"
                    android:padding="5dp"
                    android:textSize="12dp"
                    android:text="TextView" />

            </TableRow>


            <TableRow android:id="@+id/traningprogram_tableRow_workspeed" android:layout_width="wrap_content" android:layout_height="wrap_content">                    


                <TextView
                    android:id="@+id/traningprogram_textView_workspeed"
                    android:layout_width="0dip"
                     android:layout_weight="1"
                    android:layout_height="25dp"
                    android:background="@drawable/cell_shape"
                    android:padding="5dp"
                    android:text="@string/workspeed"
                    android:textSize="12dp"

                    ></TextView>

               <TextView 
                   android:background="@drawable/cell_shape" 
                   android:padding="5dp" 
                   android:id="@+id/traningprogram_textView_workspeedvalue"
                   android:layout_width="0dip" 
                   android:layout_weight="1" 
                   android:layout_height="25dp"  
                   android:textSize="12dp"
                   android:text="TextView"></TextView>

            </TableRow>


               <TableRow android:id="@+id/traningprogram_tableRow_recoveryspeed" android:layout_width="match_parent" android:layout_height="wrap_content">                    


                <TextView
                    android:id="@+id/traningprogram__textView_recoveryspeed"
                    android:layout_width="0dip"
                    android:layout_height="25dp"
                    android:layout_weight="1"
                    android:background="@drawable/cell_shape"
                    android:padding="5dp"
                     android:textSize="12dp"
                    android:text="@string/recoveryspeed" ></TextView>

                <TextView 
                    android:background="@drawable/cell_shape" 
                    android:padding="5dp" 
                    android:layout_weight="1"
                    android:textSize="12dp"
                    android:id="@+id/traningprogram_textView_recoverspeedvalue" 
                    android:layout_width="0dp" android:layout_height="25dp"  
                    android:text="TextView"></TextView>

            </TableRow>
            <TableRow android:id="@+id/traningprogram_tableRow_workduration" android:layout_width="match_parent" android:layout_height="wrap_content">                    


                <TextView
                    android:id="@+id/traningprogram_textView_workduration"
                    android:layout_width="0dip"
                    android:layout_height="25dp"
                    android:layout_weight="1"
                    android:background="@drawable/cell_shape"
                    android:padding="5dp"
                    android:textSize="12dp"
                    android:text="@string/workduration" ></TextView>

                <TextView 
                    android:background="@drawable/cell_shape" 
                    android:padding="5dp" 
                    android:layout_weight="1"
                     android:textSize="12dp"
                    android:id="@+id/textView_workdurationValue" 
                    android:layout_width="0dp" 
                    android:layout_height="25dp"  
                    android:text="TextView"></TextView>

            </TableRow>

             <TableRow android:id="@+id/traningprogram_tableRow_recoverduration" android:layout_width="match_parent" android:layout_height="wrap_content">                    


                <TextView
                    android:id="@+id/traningprogram_textViewrecoverduration"
                    android:layout_width="0dip"
                    android:layout_height="25dp"
                    android:layout_weight="1"
                    android:background="@drawable/cell_shape"
                    android:padding="3dp"
                    android:text="@string/recoveryduration" ></TextView>

                <TextView
                    android:id="@+id/traningprogram_textView_recoverydurationvalue"
                    android:layout_width="0dip"
                    android:layout_height="25dp"
                    android:layout_weight="1"
                    android:padding="3dp"
                    android:text="TextView"
                    android:textSize="12dp" />

            </TableRow>

              <TableRow android:id="@+id/traningprogram__tableRow_repe" android:layout_width="match_parent" android:layout_height="wrap_content">                    


                <TextView
                    android:id="@+id/traningprogram_textView_repes"
                    android:layout_width="0dip"
                    android:layout_height="25dp"
                    android:layout_weight="1"
                    android:background="@drawable/cell_shape"
                    android:padding="5dp"
                     android:textSize="12dp"
                    android:text="@string/reps" >
                  </TextView>
                <TextView 
                    android:background="@drawable/cell_shape" 
                    android:padding="5dp" 
                    android:id="@+id/traningprogram_textView_repes"
                     android:layout_width="0dip"
                     android:layout_weight="1" 
                     android:layout_height="25dp"  
                      android:textSize="12dp"
                     android:text="TextView"></TextView>

            </TableRow>
        </TableLayout>

drawable/cell_shape

  <?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:bottom="1dp"
        android:left="-2dp"
        android:right="1dp"
        android:top="-3dp">
        <shape android:shape="rectangle" >
            <stroke
                android:width="1dp"
                android:color="#FF000000" />

            <solid android:color="#00FFFFFF" />
        </shape>
    </item>

</layer-list>

提前感谢您的帮助

【问题讨论】:

    标签: android android-layout


    【解决方案1】:

    水平线

    view v = new View(this);
                v.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, 1));
    

    垂直线

     view v = new View(this);
     v.setLayoutParams(new TableRow.LayoutParams(1, TableRow.LayoutParams.MATCH_PARENT));
    

    将此添加到您的代码中并以编程方式将其添加到表行

    已编辑:

    TableRow row;
    row=(TableRow)findViewById(R.id.traningprogram_tableRow_mondayHeading);
    row.addView(v);
    

    如果您想在 xml 本身中创建它,请在每行项目之后使用此代码(TextView

    XML 中的水平线

    <View android:layout_width="match_parent"
          android:background="@android:color/red" 
                        android:layout_height="2dp" />
    

    XML 中的垂直线

    <View android:layout_width="2dp"
          android:background="@android:color/red" 
          android:layout_height="match_parent"/>
    

    试试这个就行了

    【讨论】:

    • 现在尝试使用我编辑的代码...显示您在代码中的使用方式,即使这不起作用
    • 它没有在表格行上显示任何行` TableRow row = (TableRow) findViewById(R.id.traningprogram_tableRow_mondayHeading);视图 v = 新视图(此); v.setBackgroundColor(android.R.color.darker_gray); v.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, 2));视图 v2 = 新视图(此); v2.setBackgroundColor(android.R.color.darker_gray); v2.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT,2));行.addView(v); row.addView(v2);`
    • 我正在尝试您的解决方案,但第二个无法在垂直线上工作。
    • 如何为视图垂直线创建对象并以编程方式可见和消失的android
    • 优秀的答案。谢谢!