Friday, 9 September 2016

add rows with buttons dynamically into table layout to have equal width




activity_main.xml



<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.example.divakar.dynamicbuttoningrid.MainActivity">


    <TableLayout        android:id="@+id/mTlayout"        android:layout_width="match_parent"        android:layout_height="wrap_content"         />
</RelativeLayout>



MainActivity.java



import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.widget.Button;
import android.widget.TableLayout;
import android.widget.TableRow;

public class MainActivity extends AppCompatActivity {

    private TableLayout table = null;

    @Override    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TableLayout displayLevels = (TableLayout) findViewById(R.id.mTlayout);
        final int screenWidth = dpToPx(getResources().getConfiguration().screenWidthDp);
        int i = 0;
        int j = 0;
        int levelNum = 8;
        TableRow row = new TableRow(this);
        TableRow.LayoutParams lp = new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT);
        row.setLayoutParams(lp);
        row.setGravity(Gravity.CENTER);
        int width = (screenWidth - (levelNum) * 4) / levelNum;//4: I don't remember name of it. It is default value.4dp or 4px... I don't remember exactly
        displayLevels.addView(row);
        while (i < levelNum) {
            Button iBtn = new Button(this);
            iBtn.setGravity(Gravity.CENTER_HORIZONTAL);
            iBtn.setMinimumWidth(100);//I set 100px for minimunWidth.            iBtn.setWidth(width);
            iBtn.setText(Integer.toString(i + 1));
            iBtn.setId(i + 1);
            //iBtn.setOnClickListener(btnclick);            row.addView(iBtn, i);
            i++;
        }
    }
    private int dpToPx(int dp) {
        return (int) (dp * getResources().getDisplayMetrics().density + 0.5f);
    }
}

No comments:

Post a Comment