【问题标题】:Android - tablet to phone screensizeAndroid - 平板电脑到手机的屏幕尺寸
【发布时间】:2012-12-09 12:49:55
【问题描述】:

我有一个具有这样屏幕的应用(在 10 英寸平板电脑上):

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

我如何在应用程序中处理这个问题,因为一个活动当前处理两个列表视图,我猜手机需要两个列表视图。

我如何判断该做什么?

谢谢

【问题讨论】:

    标签: android android-layout android-ui


    【解决方案1】:

    Supporting Different Screen Sizes

    通常这是使用 Fragments 完成的,但无论您是否使用 Fragment,基本思想都是相同的。您可以根据屏幕大小为 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>
      

    当您的 Activity 加载布局时,Android 系统将负责加载正确的布局文件(res/layout/activity_main.xmlres/layout/activity_main_twopane.xml):

    setContentView(R.layout.activity_main);
    

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

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

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

    【讨论】:

      【解决方案2】:

      您应该看看 MasterDetailedFlow 导航模板。 Eclipse:NewProject>检查创建活动>选择“MasterDetailedFlow”导航类型。在 Android 上查看Data Binding

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多