Android TableLayout программно
Я научился создавать пользовательский интерфейс с использованием XML-файла. Но, пожалуйста, помогите мне узнать, как сделать это программно, не используя XML-файлы, особенно для LinearLayout.
3 ответа
Используйте следующий код для создания TableLayout
TableLayout tbl=new TableLayout(context);
Используйте ниже для создания строки таблицы
TableRow tr=new TableRow(context);
добавить вид в строку таблицы
tr.addView(view);
здесь представление может быть TextView или EditText или т. д..
добавить строку таблицы в TableLayout
tbl.addView(tr);
Таким образом, вы можете добавить больше строк таблицы в макет таблицы.
Ниже приведен пример кода.
public class tablelayout extends Activity implements OnClickListener {
/** Called when the activity is first created. */
//initialize a button and a counter
Button btn;
int counter = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setup the layout
setContentView(R.layout.main);
// add a click-listener on the button
btn = (Button) findViewById(R.id.Button01);
btn.setOnClickListener(this);
}
// run when the button is clicked
public void onClick(View view) {
// get a reference for the TableLayout
TableLayout table = (TableLayout) findViewById(R.id.TableLayout01);
// create a new TableRow
TableRow row = new TableRow(this);
// count the counter up by one
counter++;
// create a new TextView
TextView t = new TextView(this);
// set the text to "text xx"
t.setText("text " + counter);
// create a CheckBox
CheckBox c = new CheckBox(this);
// add the TextView and the CheckBox to the new TableRow
row.addView(t);
row.addView(c);
// add the TableRow to the TableLayout
table.addView(row,new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
}
}
|*| Макет таблицы для кнопок 3 х 3 с использованием кода Java:
Установить количество строк в tblRowCwtVal
Установить количество столбцов в tblColCwtVal
Установить строку | Рисуется в tblAryVar
В этом примере мы использовали кнопку для каждого представления таблицы. Вы можете использовать TextView | ImageView и измените соответственно
int tblRowCwtVal = 3;
int tblColCwtVal = 3;
int[][] tblAryVar =
{
{R.drawable.ic_name, R.drawable.ic_name, R.drawable.ic_name},
{R.drawable.ic_name, R.drawable.ic_name, R.drawable.ic_name},
{R.drawable.ic_name, R.drawable.ic_name, R.drawable.ic_name}
};
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.srn_nam_uic);
namRelLyoVar = (RelativeLayout) findViewById(R.id.NamSrnLyoUid);
TableLayout namTblLyoVar = new TableLayout(this);
TableLayout.LayoutParams tblLyoRulVar = new TableLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
TableRow.LayoutParams btnLyoRulVar = new TableRow.LayoutParams(50,50);
for(int tblRowIdxVar = 0; tblRowIdxVar < tblRowCwtVal; tblRowIdxVar++)
{
TableRow tblRowVar = new TableRow(this);
for(int tblColIdxVar = 0; tblColIdxVar < tblColCwtVal; tblColIdxVar++)
{
Button namIdxBtnVar = new Button(this);
Drawable DrwablIdxVar = getResources().getDrawable(tblAryVar[tblRowIdxVar][tblColIdxVar]);
DrwablIdxVar.setColorFilter(Color.rgb(0,128,0), PorterDuff.Mode.SRC_IN);
namIdxBtnVar.setBackground(DrwablIdxVar);
tblRowVar.addView(namIdxBtnVar, btnLyoRulVar);
}
namTblLyoVar.addView(tblRowVar, tblLyoRulVar);
}
namTblLyoVar.setLayoutParams(tblLyoRulVar);
namRelLyoVar.addView(namTblLyoVar);
}