我在这里查看了很多线程,试图理解为什么会发生这种情况,但我就是无法理解它。
在我的 RelativeLayout 中,我有 4 个 HorizontalScrollViews (HSV),它们位于菜单(它是对齐的ParentBottom)上方。
我想在此菜单上方均匀分布 4 个 HSV。
根据我的计算,我应该能够获取设备高度,减去菜单高度,然后除以 4,得到单独的 HSV 高度。
但是,当我设置每个 HSV 的高度时,它们都比它们应该的大。
(注意:display.getHeight() 返回正确的尺寸。我在 480x800 设备上,如果我打印 deviceHeight 它返回 800)
这是我的代码:
RelativeLayout menuLayout = (RelativeLayout)findViewById(R.id.menuLayout);
HorizontalScrollView row1 = (HorizontalScrollView)findViewById(R.id.row1);
HorizontalScrollView row2 = (HorizontalScrollView)findViewById(R.id.row2);
HorizontalScrollView row3 = (HorizontalScrollView)findViewById(R.id.row3);
HorizontalScrollView row4 = (HorizontalScrollView)findViewById(R.id.row4);
//get current device dimensions
Display display = getWindowManager().getDefaultDisplay();
deviceWidth = display.getWidth(); //returns 480
deviceHeight = display.getHeight(); //returns 800
int menuHeight = deviceWidth/5; // 480/5 = 96
int remainingSpace = deviceHeight - menuHeight; // 800 - 96 = 704
int rowHeight = (int) (remainingSpace/4); // 704/4 = 176
menuLayout.getLayoutParams().height = menuHeight;
row1.getLayoutParams().height = rowHeight;
row2.getLayoutParams().height = rowHeight;
row3.getLayoutParams().height = rowHeight;
row4.getLayoutParams().height = rowHeight;
当我运行这段代码时,每一行都太大了,并被推到底部的菜单下。如果我运行 getHeight()。在一行上,它说它是正确的高度(176),但显然不是(因为 4 行太大而无法放入菜单上方的空间)。
任何人都可以对此有所了解吗?太感谢了!