繁体   English   中英

如何在Android中创建带有边框的动态表

[英]How to create a dynamic table with borders in android

我需要动态显示表格边框和表格行边框。我创建了这样的表格:

   TableLayout tl = (TableLayout) findViewById(R.id.tableLayout1);
    for (int i = initil; i <end; i++) {
        TableRow tr = new TableRow(this);
        tr.setTag(i);
        TableLayout.LayoutParams tableRowParams = new TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT,TableLayout.LayoutParams.WRAP_CONTENT);


        tableRowParams.setMargins(leftMargin, topMargin, rightMargin, bottomMargin);

        TextView txtCode = new TextView(this);
        txtCode.setTextSize(1, 12);
        createView(tr, txtCode, productList.get(i).getProductCode());

        TextView txtDes = new TextView(this);
        txtDes.setTextSize(1, 12);
        createView(tr, txtDes, productList.get(i).getDescription());

        EditText txtQty = new EditText(this);
        txtQty.setTextSize(2, 12);
        txtQty.setHeight(4);
        txtQty.setWidth(6);
        txtQty.setId(i);
        txtQty.setFocusable(true);
        txtQty.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);
        txtQty.setText("0.00");
        tr.addView(txtQty); 

        txtQty.addTextChangedListener(new TextWatcher() {
            public void afterTextChanged(Editable s) { 
                Log.v("TAG", "afterTextChanged" + s.toString());
            }

            public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
                Log.v("TAG", "beforeTextChanged");
            }

            public void onTextChanged(CharSequence s, int start, int before, int count) {
                Log.v("TAG", "onTextChanged");
            }
        });

        if(invPriceEdit.equals("") && invPriceEdit.equals("1")){
            EditText txtPrice = new EditText(this);
            txtPrice.setText(Double.toString(productList.get(i).getPrice()));
            txtPrice.setTextSize(12);
            txtPrice.setHeight(3);
            txtPrice.setWidth(8);
            tr.addView(txtPrice); 

        }else{
            TextView txtPrice = new TextView(this);
            txtPrice.setTextSize(12);
            txtPrice.setWidth(8);
            txtPrice.setText(Double.toString(productList.get(i).getPrice()));
        }
        Log.i("----" , Double.toString(productList.get(i).getPrice()));


        tl.addView(tr);
                    tr.addView(t); 
    }

       public void createView(TableRow tr, TextView t, String viewdata) {
        t.setText(viewdata);
        t.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
        t.setTextColor(Color.DKGRAY);
        t.setPadding(1, 0, 0, 0);
        tr.setPadding(0, 0, 0, 0);
        tr.addView(t); 
}

怎么给请帮帮我..

提前致谢

您可以尝试定义样式xml文件,并使用setBackgroundDrawable()函数将其用于表。

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#99FFFFFF"/>
    <corners android:radius="30px"/>
    <padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp" /> 
</shape>

一种简单的方法

  1. 将黑色应用于整个表格布局
  2. 对于每个表格行,请使用1dp的边距
  3. 为表格行中的每个孩子分配白色作为背景,并指定1dp的边距

这将在行和列之间创建黑色边框

<TableLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/black" >

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="1dp"
            >

            <TextView
                android:id="@android:id/empty"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                 android:layout_weight="1"
                 android:layout_marginLeft="1dp"
                 android:background="@android:color/white" 
                android:text="@string/no_demos" />

            <TextView
                android:id="@android:id/empty"
                 android:layout_weight="1"
                 android:layout_marginLeft="1dp"
                 android:background="@android:color/white" 
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:text="@string/no_demos" />


        </TableRow>

         <TableRow
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="1dp"
           >

            <TextView
                android:id="@android:id/empty"
                 android:layout_weight="1"
                  android:background="@android:color/white" 
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:text="@string/no_demos" />

            <TextView
                android:id="@android:id/empty"
                 android:layout_weight="1"
                  android:background="@android:color/white" 
                 android:layout_marginLeft="1dp"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:text="@string/no_demos" />


        </TableRow>


    </TableLayout>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM