2017-05-26 91 views
0

我有100dp宽度和120dp高度的卡片,并且当应用程序启动时,我将3张卡片添加到每个表格行(根据我想要的卡片总数创建表格行数加)。在手机上,这看起来很好,但是在平板电脑上却有很多开放空间,因为每行(在本例中为3)的儿童数量不是动态的以填充可用屏幕空间。当然拉伸柱子只会使卡片变宽(这看起来很尴尬)。有没有一种方法可以简单地将我的卡片添加到布局,并让它根据屏幕大小自动确定列/行子数?基于屏幕大小的表格行数儿童数

回答

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 ; // 
+0

开关高度在你的答案与宽度完全适用于平板电脑,不过这款手机拥有更高的分辨率,以便有更多的牌在电话版本上可以放在屏幕上。 – XvKnightvX

+1

更好的是,您不将宽度固定为120,而是将其计算为屏幕宽度的百分比值,例如屏幕宽度的25%cardwidth =宽度* 0.25 – AnshaD

+0

通过对原始答案的几个快速调整,我可以调整每行的数量正确 - 'int cardPerRow = width/100 /(int)displayMetrics.density; // 100是卡片的宽度 – XvKnightvX