2012-12-21 102 views
0

我有了这样的屏幕(在10" 平板电脑)的应用程序:Android的 - 平板电脑到手机屏幕大小

enter image description here

现在我需要修改应用也是一个手机上运行。由于屏幕会更小,我想采用“分割视图”用户界面并对其进行更改,以便单独显示左侧列表视图,然后在选择一行后显示适当的右侧列表视图。

我该如何在应用程序中处理这个问题,因为一个活动目前同时处理两个列表视图,而且我猜这个手机每个列表视图都需要两个。

如何检测要执行的操作?

谢谢

回答

1

请参阅Supporting Different Screen Sizes

通常这是使用片段完成的,但基本思想是相同的,无论您是否使用片段。根据屏幕大小,为您的活动创建两种不同的布局。

  • res/layout/activity_main.xml
  • 保存双窗格平板电脑布局保存的默认布局单窗格的手机在res/layout/activity_main_twopane.xml

然后使用布局别名文件与链接描述的屏幕尺寸限定符以确定何时应该使用平板电脑布局。例如,要显示在large屏幕和与最宽的方向上至少为600 dp的屏幕双窗格布局(包括大屏手机,如银河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.xmlres/layout/activity_main_twopane.xml)的护理:

setContentView(R.layout.activity_main); 

请记住,没有在单窗格布局存在的意见当您尝试访问它们时将为空(例如,不会再有两个ListView)。检查某个视图是否存在是检测您正在使用哪种布局的一种方法。

还要注意使用可选的Boolean resources in XML files。这是一种方便的方式,将“是大屏幕还是小屏幕”变量传递给Java代码。您可以访问布尔资源在你的活动是这样的:

boolean isTwoPane = getResources().getBoolean(R.bool.twopane); 
1

你应该看看MasterDetailedFlow导航模板。 Eclipse:NewProject> check create Activity>选择“MasterDetailedFlow”Navigatoin类型。看看Android上的Data Binding

+1

另见http://developer.android.com/training/basics/fragments/fragment-ui.html和http://developer.android.com /training/multiscreen/adaptui.h​​tml – CommonsWare

相关问题