【问题标题】:combine 3 relative layouts multiple times多次组合3个相对布局
【发布时间】:2013-03-15 17:30:48
【问题描述】:

我有 3 个相对布局,我需要创建一个 setcontetntview,它是这些布局的组合,每个布局添加 3 次并共享相等的屏幕空间,并且需要以编程方式完成。我首先创建了一个仅添加 2 个屏幕的新布局,

    RelativeLayout primaryLayout = new RelativeLayout(this);
    LayoutInflater layoutInflater = (LayoutInflater)this.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
    RelativeLayout newLayout = (RelativeLayout)layoutInflater.inflate(R.layout.layout3, null, false);
    RelativeLayout newLayout1 = (RelativeLayout)layoutInflater.inflate(R.layout.layout4, null, false);
    primaryLayout.addView(newLayout);
    primaryLayout.addView(newLayout1);
    setContentView(primaryLayout);

这仅显示布局4。另外,如果我再次添加相同的布局,它给出的错误说明指定的孩子已经有一个父母,你必须首先在孩子的父母上调用 removeview()。请帮忙!

【问题讨论】:

    标签: android android-layout android-relativelayout layout-inflater


    【解决方案1】:

    它只显示 layout4 的原因是 primaryLayout 是一个相对布局。除非你指定一些东西告诉它他们在那个布局中去哪里,否则它都在左上角。所以所有的东西都叠放在一起。

    您不能多次添加相同的布局。您必须为所需的每个版本重新充气一次,然后添加结果。它就像 OOP-RelativeLayout 是布局的一个实例,膨胀实例化一个新的。

    【讨论】:

    • 感谢回复,我加了规则,但是如何让它们各占半屏??
    【解决方案2】:

    您必须在布局参数中使用addRule 来设置视图之间的相互关系。至于重新添加视图的抱怨,您可以尝试两个独立的视图实例。虽然它是相同的布局,但父级不会知道这一点。

    编辑:

    要占据半屏,您必须告诉父视图为子视图分配多少空间:

    RelativeLayout.LayoutParams forChild = new RelativeLayout.LayoutParams(30,40);
    childView.setLayoutParams(forChild);
    

    【讨论】:

    • 感谢回复,我加了规则,但是如何让它们各占半屏??
    • 我已经编辑向您展示如何设置子视图的大小。您不必使用实际的数字,您可以使用 wrap_content 之类的东西。随便玩弄它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-13
    • 2013-07-30
    • 2013-07-05
    • 1970-01-01
    • 2018-12-21
    • 2012-09-08
    相关资源
    最近更新 更多