具有多个视图的片段,"屏幕"

Ale*_*dre 0 android android-layout android-fragments

我一直在寻找一种方法来使用Fragment和它自己的"屏幕".

我的情景:

  • FragmentActivity - > layout:带有以下选项卡的选项卡主机:主页| 网络| 饲料

  • HomeFragment - >布局:有2个按钮,我需要为这些按钮创建一个屏幕,但我不知道该怎么做,也许隐藏显示的元素,只显示我需要的元素在"按钮屏幕"

  • NetworkFragment - > layout:n个按钮和n个屏幕

  • FeedsFragment - > layout:n个按钮和n个屏幕

选项卡主机工作正常,我可以在我的选项卡(片段)之间切换,但是在片段屏幕上,我需要单击该按钮并显示除片段选项卡屏幕之外的其他屏幕.

lou*_*uie 5

你想要使用的是FrameLayout.这将让你有一堆视图.部分文件内容如下:

子视图以堆栈形式绘制,最近添加的子项位于顶部.

这在Android框架中经常用于执行诸如显示空视图或列表视图之类的任务,如下面的代码片段所示.此代码段可以显示ListView或TextView.

    <FrameLayout
    android:layout_width="match_parent"
    android:layout_height="0dip"
    android:layout_weight="1" >
    <!-- Here is the list. Since we are using a ListActivity, we
         have to call it "@android:id/list" so ListActivity will
         find it -->
    <ListView android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:drawSelectorOnTop="false"/>

    <!-- Here is the view to show if the list is emtpy -->
    <TextView android:id="@android:id/empty"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="No items."/>

</FrameLayout>
Run Code Online (Sandbox Code Playgroud)

请注意,在给布局充气后,第一个元素位于底部,最后一个元素位于底部.在这个特定的例子中,这意味着TextView将是唯一可见的,因为它匹配parent(即填充父级).

如果要使另一个视图可见,则可以使另一个视图不可见:

findViewById(android.R.id.empty).setVisible(View.INVISIBLE);
Run Code Online (Sandbox Code Playgroud)

如果您有多个视图(您称之为屏幕),只需循环浏览它们并设置您不希望显示的视图,以便显示您想要显示的视图.

请注意,如果您想获得更好的效果,可以使用片段执行相同的技术.有一个很好的Android培训文章,称为构建灵活的用户界面.它仍然使用FrameLayout,但它使用Fragment事务.但是,它可能不适用于您的特定情况,因为片段不能包含其他片段,并且您已经在TabHost中依赖多个片段,因此请从上面更简单的FrameLayout方法开始.