首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何以编程方式在RelativeLayout中部署视图?

如何以编程方式在RelativeLayout中部署视图?
EN

Stack Overflow用户
提问于 2018-03-12 05:37:14
回答 9查看 0关注 0票数 0

我试图以编程方式(而不是通过XML声明)实现以下目标:

代码语言:javascript
复制
<RelativeLayout...>
   <TextView ...
      android:id="@+id/label1" />
   <TextView ...
      android:id="@+id/label2"
      android:layout_below: "@id/label1" />
</RelativeLayout>

换句话说,我如何使第二个TextView出现在二下面,但我想用代码来完成:

代码语言:javascript
复制
RelativeLayout layout = new RelativeLayout(this);
TextView label1 = new TextView(this);
TextView label2 = new TextView(this);
...
layout.addView(label1);
layout.addView(label2);
setContentView(layout);

我做错什么了?

代码语言:javascript
复制
RelativeLayout layout = new RelativeLayout(this);
TextView tv1 = new TextView(this);
tv1.setText("A");

TextView tv2 = new TextView(this);
tv2.setText("B");
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
        RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.FILL_PARENT);
lp.addRule(RelativeLayout.RIGHT_OF, tv1.getId());

layout.addView(tv1);        
layout.addView(tv2, lp);
EN

回答 9

Stack Overflow用户

发布于 2018-03-12 06:41:17

必须使用LayoutParams添加视图。

代码语言:javascript
复制
LinearLayout linearLayout = new LinearLayout(this);

RelativeLayout.LayoutParams relativeParams = new RelativeLayout.LayoutParams(
        LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
relativeParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);

parentView.addView(linearLayout, relativeParams);

所有的功劳都归功于sechaden,必须将ID分配给它们。

代码语言:javascript
复制
TextView tv1 = new TextView(this);
tv1.setId(1);
TextView tv2 = new TextView(this);
tv2.setId(2);

然后addRule(RelativeLayout.RIGHT_OF, tv1.getId());

票数 0
EN

Stack Overflow用户

发布于 2018-03-12 08:14:02

长话短说:使用相对布局,可以将元素放置在布局中。

  1. 创建一个新的RelativeLayout.LayoutParams。RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(...)(无论填写父项或包装内容,必须填写绝对数字或引用XML资源)
  2. 添加规则:规则是指父级或层级中的其他“兄弟”。lp.addRule(RelativeLayout.BELOW,someOtherView.getId())lp.addRule(RelativeLayout.ALIGN_PARENT_LEFT)
  3. 只需应用布局参数:最健康的方法是:parentLayout.addView(myView,lp)
票数 0
EN

Stack Overflow用户

发布于 2018-03-12 08:39:42

最后意识到你不能使用零作为视图id。 你会认为它被允许为NO_ID == -1,但如果你把它提供给你的视图,事情往往会变得不合时宜......

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100003604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档