我需要创建一个TableLayout视图,它可以根据屏幕大小动态添加列。
例如,如果我在手机上,我每行可以添加的最大单元格数为5.但是,如果我在平板电脑上,我每行可以添加的最大单元格数为10。
5 和 10 值只是 magic 数字。
理想情况下,我会查询设备以确定屏幕大小,并根据大小调整列数。
这是我创建TableLayout的代码(它工作正常):
TableLayout tableLayout = new TableLayout(mContext);
tableLayout.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT,
TableLayout.LayoutParams.WRAP_CONTENT));
TableRow row = new TableRow(mContext);
row.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT,
TableRow.LayoutParams.WRAP_CONTENT));
String[] separated = scheduleTimes.split(",");
for (int s = 0; s < separated.length; s++) {
// Five per row
if ((s % itemsPerRow) == 0) {
tableLayout.addView(row);
row = new TableRow(mContext);
row.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT,
TableRow.LayoutParams.WRAP_CONTENT));
}
TextView tv = new TextView(mContext);
tv.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,
TableRow.LayoutParams.WRAP_CONTENT));
tv.setPadding(5, 5, 5, 5);
tv.setGravity(Gravity.RIGHT);
tv.setTypeface(TypefaceSingleton.getRobotoRegular());
tv.setTextSize(16);
tv.setText(separated[s].trim());
row.addView(tv);
}
tableLayout.addView(row);
关于如何确定每行可以添加的单元格数量的任何想法(即设置itemsPerRow
)?
答案 0 :(得分:0)
以dp获取显示宽度,然后确定每个单元格需要多少dps。我认为你已经完成了艰苦的工作。
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
float dpWidth = displayMetrics.widthPixels / displayMetrics.density;
itemsPerRow = dpWidth / cellWidthDp;