表行基于屏幕大小的子计数

时间:2017-05-26 16:51:55

标签: android size row children android-tablelayout

我的卡片宽度为100dp,高度为120dp,当应用程序启动时,我会在每个表格行中添加3张卡片(根据我要添加的卡片总数创建表格行数)。在手机上这看起来很好但是在平板电脑上有很多空地,因为每行的孩子数量(在这种情况下为3)不能动态填充可用的屏幕空间。当然,拉伸列只会使卡片更宽(这看起来非常笨拙)。有没有办法可以简单地将我的卡添加到布局中,并根据屏幕大小自动确定列/行子计数?

1 个答案:

答案 0 :(得分:1)

您可以使用窗口管理器获取屏幕大小

WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
final DisplayMetrics displayMetrics = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(displayMetrics);
int height = displayMetrics.heightPixels;
int width = displayMetrics.widthPixels;

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;

找到要加载的所需卡数。

最好将卡的宽度设置为与屏幕宽度成比例 例如

int padding = 5;
float cardwidth = width*0.25 - padding; // card with 25% width of screen   

      int count = width /cardwidth ; //