Aam*_*mir 11 android android-layout google-tv android-fragments
我正在开发针对平板电脑和谷歌电视的应用程序.它就像许多标准的Google TV应用程序一样,具有LeftNavBar和顶级搜索栏,这对所有应用程序屏幕都是通用的.它看起来像下图:
主屏幕

所有其他屏幕的RED区域将不同.它可能包含以下屏幕模型等数据:
活动一加载到主容器中

活动二加载到主容器中

因此,您可以看到主区域中可以加载完全不同的部分.
当在屏幕2中选择任何列表项时(例如在片段列表中),可以将屏幕3作为详细部分加载,或者可以在选择选项卡(将出现在LeftNavBar中)时加载它.
这是我试图实现它的方式.
步骤1.我使用以下XML创建了一个主Activity:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#9ccc" >
<!-- Top Bar -->
</LinearLayout>
<FrameLayout
android:id="@+id/mainContainer"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<!-- main Red Container that will load other Activities -->
</FrameLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
mainContainer是我想要加载活动的RED容器.LeftNavBar将作为All的父级添加到此Activity中.
步骤2我创建ActivityOne&ActivityTwo与它们两个分别与三个片段(如在上面第二和第三图像示出).
*步骤3我正在尝试加载ActivityOne主页面的mainContainer FrameLayout ......但是我无法添加它.
我试图通过添加ActivityOne到mainContainer如下:
View v = (new ActivityOne()).getWindow().getDecorView();
FrameLayout mainContainer = (FrameLayout) findViewById(R.id.mainContainer);
mainContainer.addView(v);
Run Code Online (Sandbox Code Playgroud)
但getWindow()回报null....
出现其他问题是因为所有数据都来自远程服务 ..所以请同时建议我如何能够mainContainer在某种堆栈中保存对所有已加载活动的引用...所以我可以重新加载已经加载的活动而不是创建它的新实例..这将用于按下BACK按钮.
要么
我应该创建两个活动,每个活动都有自己的Fragments和一个LeftNavBar,而不是将活动加载到上面的RED容器中.这可能比上述方法更容易.或者这可能是唯一的解决方案....但我觉得保存BACK按钮的状态可能会变得混乱..但我会尝试实现这一点
如果你必须创建这种类型的应用程序,你会怎么做?您将如何设计UI布局以获得最佳性能/实践?
我们非常感谢您帮助我设置此应用程序布局的建议.
Oce*_*ife -1
回复:嵌套 Fragments 问题
为了解决我们的应用程序中的“嵌套片段”问题(正如您正确地注意到的那样),我在活动下Fragment托管Fragment了一个模板片段,其唯一目的是定义一组占位符以供其他片段锚定。当向超过此点的活动添加更多 Fragments 时,我使用模板 Fragment 的视图占位符+@id来标识要添加的 Fragment 的“根”或父视图 ID。
getSupportFragmentManager().beginTransaction().add(#someIdFromTheTemplateFrag, fragment, fragmentTag).commit();
Run Code Online (Sandbox Code Playgroud)
我添加的片段知道将自己锚定在当前布局中的何处,当然,然后继续以愉快的方式添加其视图。这具有将一个片段附加到另一个片段的效果,从而实现所需的视觉“嵌套”......
| 归档时间: |
|
| 查看次数: |
4280 次 |
| 最近记录: |