代码之家  ›  专栏  ›  技术社区  ›  james

以编程方式将视图添加到XML布局,并使其z顺序低于现有视图

  •  3
  • james  · 技术社区  · 16 年前

    我有一个带有一些自定义选项卡、标题和 ProgressBar ( main.xml ). 我想添加另一个XML布局( home.xml )致 主.xml 布局,如我所愿 主.xml 对其他活动的布局可重用,只需根据需要添加内容即可。

    主页.xml 包含 ScrollView 以及 TextView . 我正在使用我的活动 LayoutInflator 添加 主页.xml 到 主.xml :

    LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    inflater.inflate(R.layout.home, rootLayout);
    

    rootLayout 是的根布局 主.xml 是一个 RelativeLayout

    问题是:充气后 R.layout.home 进入之内 根布局 ,好像 进度条 包含在 根布局 隐藏在 主页.xml

    当以这种方式构造布局时,是否有方法告诉某些视图(通过XML)浮在其他视图之上?

    如果没有,我是不是被迫使用诸如 progressBar.bringToFront() 向高层提出有针对性的意见?

    当一些布局是使用膨胀构造的时,在z顺序视图中我有什么选择?

    编辑:好像 bringToFront() 方法没有达到我的预期-我在 Button 视图和它似乎仍然被排列在所有其他视图(已膨胀)之下,并且仍然不可接受

    2 回复  |  直到 16 年前
        1
  •  5
  •   Tseng    14 年前

    你可以试着用 ViewStub 而不是手动添加并设置 inflateId 具有 setInflateId(R.layout.home)

    http://developer.android.com/resources/articles/layout-tricks-stubs.html

    编辑: 谷歌似乎不得不将android开发者从他们的android页面转移到blogspot。

    更新链接: http://android-developers.blogspot.com/2009/03/android-layout-tricks-3-optimize-with.html

        2
  •  5
  •   Romain Guy    16 年前

    视图是根据它们在父视图中的顺序绘制的。例如,索引0处的子项总是首先绘制(至少在当前布局中,库除外),索引计数为-1处的子项总是最后绘制。bringToFront()只需将视图从父视图中的当前位置移动到最后一个位置。请注意,更改子项的索引可能会影响其在屏幕上的位置(例如,在水平线性布局中,将子项从索引0移动到索引计数-1也会将其从最左侧移动到最右侧)