![](/img/trans.png)
[英]how do i accurately calculate my layout (button) height relative to screen size?
[英]Fragments: How do I compose the final, screen size dependent, layout of my application?
编辑:
问题最终是关于是否存在事实上的标准或Google关于如何实施以下问题的建议。
起源:
最近,我开始仔细研究Android中的Fragments
概念 。 我确实对此有想法(或者至少我认为是这样),并且我也看到了对此的需求。 我很容易理解片段实现背后的技术。 但是,我似乎在理解上有问题,是如何组成应用程序的最终布局,以便它可以在大型平板电脑和小型智能手机上自动运行?
我有我的列表片段(例如MS Outlook-inbox-list)和详细视图片段(例如MS Outlook-email-preview)。 在平板电脑上,我自然希望在单个活动中显示这两个片段,但是在智能手机上,我希望在两个不同的活动中显示它们,而在单个活动中并不一定要同时容纳两个片段。
我该如何解决呢?
我是否必须在应用程序中实现三个活动(多合一平板电脑活动和两个单独的智能手机特定活动)? 但是,应用程序如何才能决定使用哪种实现(1或1 + 1)呢?
通常,我的活动扮演“控制器”的角色(根据MVC范例),但是,就上述问题而言,我将拥有三个控制器。 哪种构造将扮演根控制器的角色? 我是否应该编写一个“主活动”(不带UI),以编程方式尝试确定其驻留在哪个设备上,然后相应地调用合适的片段活动? 但是之后; 如何以一种定义明确的方式找出我的应用程序在哪种类型的设备(平板电脑/手机)上运行?
我想我可以发布一些代码,但是我认为这不会进一步澄清我的问题,因为它更多是体系结构选择问题,而不是特定于实现的问题。
干杯,
数据库
我是否必须在应用程序中实现三个活动(多合一平板电脑活动和两个单独的智能手机特定活动)?
不,可能只有两个。 一个负责加载ListFragment
,如果有空间,则负责加载细节片段。 另一个仅加载详细信息片段-如果用户点击列表条目并且第一个活动未显示详细信息片段,则第一个活动将由第一个活动启动。
通常,我的活动扮演“控制器”的角色(根据MVC范例),但是,就上述问题而言,我将拥有三个控制器。
恕我直言,带有片段的片段是您的控制者。 活动是业务流程层,用于确定哪些片段可见并处理跨片段事件。
但是之后; 如何以一种定义明确的方式找出我的应用程序在哪种类型的设备(平板电脑/手机)上运行?
在许多情况下,最简单的解决方案是通过布局XML资源来驱动它。
例如,在我的上述建议中,第一个活动可能具有main.xml
两个不同版本。 一个( res/layout/main.xml
)仅加载ListFragment
。 另一个(例如, res/layout-large-land/main.xml
)加载ListFragment
和详细信息片段,或加载ListFragment
和动态详细信息片段的FrameLayout
容器(您可以通过FragmentTransaction
定义)。 活动本身通过确定第二个片段(或其FrameLayout
“插槽”)是否存在于膨胀的main.xml
来确定是管理两个片段还是一个片段。 这样,如果您将来更改布局规则(例如res/layout-sw600dp-land/main.xml
),则无需更改Java代码。
也没有什么可以阻止您使用Configuration
和DisplayMetrics
尝试在Java代码中进行决策。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.