2017-05-26 51 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