使用动态或静态片段支持不同的屏幕尺寸?

时间:2015-07-05 23:38:39

标签: android android-fragments fragmentmanager

我发现能够使用片段支持多屏幕令人困惑。我认为这个想法是我可以提供多个版本的活动,并且该活动可能有一个或多个片段(取决于房地产)静态嵌入。

支持动态片段,这些片段是从代码而不是嵌入的<fragment>元素类型添加的。如何在代码中完成此操作,因为我不知道活动中xml的配置细节。

有没有人有这方面的例子?

何时使用静态或动态片段。

我可以预见使用动态片段的一个原因是支持片段上的保留,因此活动可以在代码中请求它但我发现很难理解如果没有活动(java)确切知道这将如何支持什么xml文件可用

由于

3 个答案:

答案 0 :(得分:0)

我发现查看并理解Android Samples的代码非常有用。

这些示例项目通常很小,每个项目只关注1个或2个主要概念。

如果您不想实际下载和安装示例项目,您还可以浏览GitHub上的源代码。

例如在NavigationDrawer sample中,NavigationDrawerActivity类包含一个动态创建的PlanetFragment类。

答案 1 :(得分:0)

使用&#34;动态&#34;有两个主要原因。片段:

  1. 您可以按代码传递参数。例如,如果您有一个显示文章的片段,则按代码创建片段并使用要显示的文章对其进行初始化(使用Fragment.setArguments(Bundle))。这相当于使用Intent.putExtras()将参数传递给Activity。
  2. 您可以在同一个容器中交换不同的片段。
  3. 主活动中的

    示例1:您有一个包含3个部分的导航菜单。当用户选择新的部分时,您将替换Fragment&#34; A部分&#34;与片段&#34; B节&#34;在同一个FrameLayout容器中。

    示例2:您在平板电脑上显示双窗格布局(项目列表+详细信息)。每次用户选择左侧列表中的项目时,您都会为新项目创建一个新的片段,以显示新项目并将右侧的现有片段替换为新片段。

    示例3:您有一个ViewPager,它显示了很长的文章列表。您向右或向左滑动以导航到上一篇/下一篇文章。这些片段将以编程方式在FragmentPagerAdapter中创建;你不能使用静态碎片来做到这一点。

答案 2 :(得分:0)

要回答有关如何使用动态片段实现双窗格的问题,请按以下步骤操作:

  1. 在资源中创建名为values-land的文件夹。在此文件夹中,添加一个config.XML文件,您将在其中获得如下代码:

    <resources> <item type="bool" name="dual_pane">true</item> </resources>

  2. 在&#34; normal&#34; values文件夹,在config.xml文件中,添加以下代码:

    <resources> <item type="bool" name="dual_pane">false</item> </resources>

  3. 在您的活动中,您可以在onCreate()中检测与您刚刚创建的横向配置相对应的布尔值:

    getResources()getBoolean(R.bool.dual_pane)。

  4. 然后,基于布尔值,您可以决定使用另一个(单个窗格布局)上的两个片段容器或两个彼此相邻的片段容器(双窗格布局)来扩充布局。

  5. 最后将您的片段动态添加到相应的容器中,然后瞧。

  6. 我喜欢这个approch,因为它非常像Android,通过使用不同的值文件夹。此外,您不必更改现有的工作片段模式,以使其支持双窗格模式。