【发布时间】:2012-09-14 16:53:39
【问题描述】:
我有一个 ListFragment,它在 onActivityCreated() 方法中添加了 2 个视图 - 一个 MapView 通用视图(持久标头)。我希望 ListView 在纵向模式下显示在 MapView 和标题下方,在 MapView 右侧和横向模式下显示在标题下方。我还希望 MapView 的高度(纵向)和宽度(横向)是可用窗口大小的百分比(减去操作栏、状态栏和导航栏——如果设备上存在的话)。为了实现这一点,我相信我需要获取窗口大小并计算所有 3 个视图的适当高度、宽度和布局边距。我已经尝试过类似问题中推荐的一些方法,但解决方案总是返回设备的高度/宽度,而不是 Activity 的窗口大小。
任何想法。提前致谢。
【问题讨论】:
-
首先感谢大家的回复。我故意不使用允许权重属性的 ViewGroups 的不同布局。我动态添加视图的原因是 ListActivity 管理我的空状态和“加载”状态。使用我目前的方法,我所要做的就是告诉 ListActivity 我的空视图是什么,并在我有数据时设置列表适配器。这样,当列表为空时,用户将看到我的空视图,并在加载时看到 ProgressBar。我的主要问题是如何以编程方式获取宽度/高度。
-
我最终在视图中添加了一个 GlobalLayoutListener 以获得宽度和高度。