如何在另一个背后膨胀视图

时间:2013-02-12 15:17:19

标签: android android-layout android-xml

请原谅我,如果这是一个简单的问题,但我是Android开发的新手,这个问题一直困扰着我。

我有一个“基础”布局文件,其中包含来自this library的RelativeLayout和com.devspark.sidenavigation.SideNavigationView。

然后我有一个ViewPager活动,它将其他布局(包含ListViews和progressBars)扩展到此。我的问题是,无论我尝试做什么,SideNavigationMenu总是出现在膨胀的列表视图之后。我不确定出了什么问题,而且我在乱七八糟的布局中迷失了方向。有没有人有任何指示?

这是我的“基础”布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".NewNews"
    tools:ignore="MergeRootFrame">  

<com.devspark.sidenavigation.SideNavigationView
    android:id="@+id/side_navigation_view_news"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clipChildren="false"/>

</RelativeLayout>

以及其中一个夸大的“子”布局的例子:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

<eu.erikw.PullToRefreshListView
    android:id="@+id/listView_all"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@android:color/transparent"/>

<ProgressBar
    android:id="@+id/progressBar_all"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center" />

</FrameLayout>

提前致谢

2 个答案:

答案 0 :(得分:3)

相对布局不支持图层。

视图按照添加到布局的顺序放在彼此的顶部。

e.g。

  • 将viewA添加到relativelayout
  • 将viewB添加到relativelayout
  • viewB将面向viewA

一种充气方式&#34;背后&#34;在另一个视图膨胀之前,它正在膨胀另一个视图。

  • 将viewB添加到relativelayout
  • 将viewA添加到relativelayout
  • viewA将面向viewB

或删除视图并将其重新添加到relativelayout

  • 将viewA添加到relativelayout
  • 将viewB添加到relativelayout
  • 删除viewA
  • 重新添加viewA
  • viewA将面向viewB

答案 1 :(得分:2)

我是这样做的:

parentView.addView(childView, 0);
  

第二个参数是index,即添加子项的位置

这里第二个参数传递给0,这使得子视图被添加到已存在的视图的后面。