Search code examples
androidandroid-tablelayout

How to add border to simple tablelayout programmatically


How can I add borders to a TableLayout through code ?

TableLayout in xml

<TableLayout 
            android:id="@+id/tableLayout1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" >
</TableLayout>

My code

TableLayout prices = (TableLayout)findViewById(R.id.tableLayout1);
    prices.setStretchAllColumns(true);
    prices.bringToFront();
    for(int i = 0; i < 1; i++){
        TableRow tr =  new TableRow(this);
        TextView c1 = new TextView(this);
        c1.setText(equipHere);
        c1.setTextColor(Color.BLACK);
        c1.setTextSize(15);
        TextView c2 = new TextView(this);
        c2.setText("No of Days("+daysHere+")");
        c2.setTextColor(Color.BLACK);
        c2.setTextSize(15);
        tr.addView(c1);
        tr.addView(c2);
        prices.addView(tr);
    }

Solution

  • Create Gradient into res\xml\table.xml like:

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient   android:startColor="#C0C0C0" 
                android:endColor="#505050"
                android:angle="90"/>   
     <corners android:radius="2px" />
    </shape>
    

    And set to your TableLayout background

    TableLayout table = (TableLayout)findViewById(R.id.tableLayout1);
    table.setBackgroundDrawable(getResources().getDrawable(R.xml.table));
    

    And Programmatically you can achieve like:

      GradientDrawable gd = new GradientDrawable(
                    GradientDrawable.Orientation.TOP_BOTTOM,
                    new int[] {Color.parseColor("#C0C0C0"), Color.parseColor("#505050")});
            gd.setGradientCenter(0.f, 1.f);
            gd.setLevel(2);
            table.setBackgroundDrawable(gd);