[英]Supporting different screen sizes with dynamic or static fragments?
我发现能够使用片段支持多屏幕令人困惑。 我以为我可以提供该活动的多个版本,并且该活动可以静态嵌入1个或多个片段(取决于房地产)。
支持动态片段,这些片段是通过代码而不是嵌入式<fragment>
元素类型添加的。 由于我不知道活动中xml的配置详细信息,因此如何用代码完成此操作。
有没有人举这个例子?
什么时候使用静态或动态片段。
我可以预见使用动态片段的原因之一是支持保留片段,因此活动可以只在代码中要求它,但是我发现很难理解,如果活动(java)不能确切知道什么xml文件,将如何支持该片段。可用
谢谢
我发现通读并理解Android示例代码非常有用。
这些示例项目通常很小,并且每个项目仅关注1或2个主要概念。
如果您不想实际下载并安装示例项目,也可以在GitHub上浏览源代码。
例如,在NavigationDrawer示例中 , NavigationDrawerActivity类包含一个动态创建的PlanetFragment类。
使用“动态”片段有两个主要原因:
Fragment.setArguments(Bundle)
)。 这等效于使用Intent.putExtras()
将参数传递给Activity。 示例1:在主活动中,您有一个包含3个部分的导航菜单。 当用户选择一个新的节时,您可以在同一FrameLayout容器中用“节B”替换“节A”。
示例2:您在平板电脑上显示了两个窗格的布局(项目列表+详细信息)。 每次用户在左侧列表中选择一个项目时,您都会为该新项目创建一个新的Fragment进行初始化,以显示该新项目并将其右侧的现有Fragment替换为新的Fragment。
示例3:您有一个ViewPager,其中显示了很长的文章列表。 您向右或向左滑动即可浏览到上一篇/下一篇文章。 这些片段将在FragmentPagerAdapter内以编程方式创建; 您无法使用静态片段来做到这一点。
要回答有关如何使用动态片段实现双重窗格的问题,方法如下:
在资源中创建一个名为values-land的文件夹。 在此文件夹中,添加一个config.XML文件,其中将具有以下代码:
<resources> <item type="bool" name="dual_pane">true</item> </resources>
在“普通”值文件夹中的config.xml文件中,添加以下代码:
<resources> <item type="bool" name="dual_pane">false</item> </resources>
在您的活动中,您可以在onCreate()中检测与刚创建的景观配置相对应的布尔值:
getResources()。getBoolean(R.bool.dual_pane);
然后,基于布尔值,您可以决定仅在两个顶部的两个片段容器之间放置一个分片容器(单窗格布局),或者彼此相邻的两个片段容器之间进行充气(双窗格布局)。
最后,将片段动态添加到适当的容器中,瞧。
我喜欢这个方法,因为它非常类似于Android,使用了values文件夹。 另外,您不必对现有的工作Fragment模式进行太多更改即可使其支持双窗格模式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.