我有一个RelativeLayout作为根元素。根元素下有三个LinearLayouts。第一个和最后一个具有固定的高度,中间的一个具有屏幕的其余部分。
LinearLayout中间有两个ScrollView。我以编程方式在其中添加新视图。我想在滚动视图中显示三个项目,无论屏幕尺寸是多少。
问题是,我无法计算高度,所以我不能将它除以三并获得所需的物品高度。
我试图调用measure()和getMeasuredHeight()但是LinearLayout返回21(我不知道为什么)并且ScrollViews返回0. LinearLayout和ScrollViews都有match_parent属性。
那么如何才能获得实际高度?我知道它是在某处计算的,因为我可以看到它覆盖了所有空白区域。
答案 0 :(得分:2)
好
除非你有充分的理由,否则不要这样做。这种布局不适用于平板电脑和大型设备(看起来很奇怪有大型列表项)并且它不常见。
错误
你说顶视图和底视图有一个固定的大小,你可以通过以下方式获得屏幕的高度:
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
// Use getSize on API13+
int displayHeight = display.getHeight();
然后每行的高度只是
int listHeight = displayHeight - (2 * fixedHeight)
int rowHeight = listHeight/3;
这很糟糕,因为它不适用于更复杂的布局。
丑陋
在onCreate
中,您的观看次数尚未初始化。您需要等到视图被指定大小。有几种方法可以做到这一点:
View.OnLayoutChangeListener
(API 11 +)ViewTreeObserver.OnGlobalLayoutListener
(API 1 +)onSizeChanged