我的应用程序有这样的屏幕(在10英寸平板电脑上):
现在我需要修改应用程序以便在手机上工作。由于屏幕较小,我想采用“拆分视图”UI并对其进行更改,以便左侧列表视图自行显示,然后在选择行时,将显示相应的右侧列表视图。
如何在应用程序中处理此问题,因为一个活动当前处理两个列表视图,我想手机每个列表视图需要两个。
如何检测要执行的操作?
感谢
答案 0 :(得分:1)
您应该查看MasterDetailedFlow导航模板。 Eclipse:NewProject>选中创建活动>选择“MasterDetailedFlow”Navigatoin类型。在Android上查看Data Binding
答案 1 :(得分:1)
请参阅Supporting Different Screen Sizes。
通常这是使用Fragments完成的,但无论您是否使用片段,基本思路都是相同的。您可以根据屏幕大小为Activity创建两种不同的布局。
res/layout/activity_main.xml
res/layout/activity_main_twopane.xml
然后使用布局别名文件和链接中描述的屏幕尺寸限定符来确定何时应使用平板电脑布局。例如,要显示large
屏幕和最宽屏幕上至少600dp的屏幕上的双窗格布局(包括Galaxy S3等大屏幕电话),您可以这样做:
res/values-large/layout.xml
包含:
<resources>
<item name="activity_main" type="layout">@layout/activity_main_twopane</item>
<bool name="twopane">true</bool>
</resources>
res/values-sw600dp/layout.xml
包含:
<resources>
<item name="activity_main" type="layout">@layout/activity_main_twopane</item>
<bool name="twopane">true</bool>
</resources>
当您的活动加载布局时,Android系统会负责加载正确的布局文件(res/layout/activity_main.xml
或res/layout/activity_main_twopane.xml
):
setContentView(R.layout.activity_main);
请记住,当您尝试访问时,单窗格布局中不存在的视图将为null(例如,不再有两个ListView
)。检查某个视图是否存在是检测您正在使用的布局的一种方法。
另请注意使用可选Boolean resources in XML files。这是将“是大屏幕还是小屏幕”变量传递给Java代码的便捷方法。您可以在Activity中访问布尔资源,如下所示:
boolean isTwoPane = getResources().getBoolean(R.bool.twopane);