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

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

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

<RelativeLayout...>
   <TextView ...      android:id="@+id/label1" />
   <TextView ...      android:id="@+id/label2"
      android:layout_below: "@id/label1" /></RelativeLayout>

换句话说,我如何使第二个TextView出现在第一个代码下面,但我想在代码中这样做:

RelativeLayout layout = new RelativeLayout(this);TextView label1 = new TextView(this);TextView label2 = new TextView(this);...
layout.addView(label1);layout.addView(label2);setContentView(layout);

最新情况:

谢谢,TreeUK。我理解总体方向,但仍然行不通-“B”与“A”重叠。我做错什么了?

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);


慕哥9229398
浏览 421回答 3
3回答

慕姐4208626

从我能够拼凑起来的东西来看,你必须使用LayoutParams添加视图。LinearLayout&nbsp;linearLayout&nbsp;=&nbsp;new&nbsp;LinearLayout(this);RelativeLayout.LayoutParams&nbsp;relativeParams&nbsp;=&nbsp;new&nbsp;RelativeLayout.LayoutParams( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LayoutParams.MATCH_PARENT,&nbsp;LayoutParams.MATCH_PARENT);relativeParams.addRule(RelativeLayout.ALIGN_PARENT_TOP); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parentView.addView(linearLayout,&nbsp;relativeParams);所有的功劳都归功于sechaden,为了相对地以编程方式定位您的项目,您必须将ID分配给它们。TextView&nbsp;tv1&nbsp;=&nbsp;new&nbsp;TextView(this);tv1.setId(1);TextView&nbsp;tv2&nbsp;=&nbsp;new&nbsp;TextView(this);tv2.setId(2);然后addRule(RelativeLayout.RIGHT_OF, tv1.getId());

炎炎设计

Android 22最小可运行示例资料来源:import&nbsp;android.app.Activity;import&nbsp;android.os.Bundle;import&nbsp;android.view.View;import&nbsp;android.view.ViewGroup; import&nbsp;android.widget.RelativeLayout;import&nbsp;android.widget.TextView;public&nbsp;class&nbsp;Main&nbsp;extends&nbsp;Activity&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;@Override &nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;void&nbsp;onCreate(Bundle&nbsp;savedInstanceState)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;super.onCreate(savedInstanceState); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;final&nbsp;RelativeLayout&nbsp;relativeLayout&nbsp;=&nbsp;new&nbsp;RelativeLayout(this); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;final&nbsp;TextView&nbsp;tv1; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tv1&nbsp;=&nbsp;new&nbsp;TextView(this); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tv1.setText("tv1"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Setting&nbsp;an&nbsp;ID&nbsp;is&nbsp;mandatory. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tv1.setId(View.generateViewId()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;relativeLayout.addView(tv1); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;tv2. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;final&nbsp;TextView&nbsp;tv2; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tv2&nbsp;=&nbsp;new&nbsp;TextView(this); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tv2.setText("tv2"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RelativeLayout.LayoutParams&nbsp;lp&nbsp;=&nbsp;new&nbsp;RelativeLayout.LayoutParams( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ViewGroup.LayoutParams.WRAP_CONTENT, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ViewGroup.LayoutParams.FILL_PARENT); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lp.addRule(RelativeLayout.BELOW,&nbsp;tv1.getId()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;relativeLayout.addView(tv2,&nbsp;lp); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;tv3. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;final&nbsp;TextView&nbsp;tv3; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tv3&nbsp;=&nbsp;new&nbsp;TextView(this); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tv3.setText("tv3"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RelativeLayout.LayoutParams&nbsp;lp2&nbsp;=&nbsp;new&nbsp;RelativeLayout.LayoutParams( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ViewGroup.LayoutParams.WRAP_CONTENT, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ViewGroup.LayoutParams.WRAP_CONTENT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lp2.addRule(RelativeLayout.BELOW,&nbsp;tv2.getId()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;relativeLayout.addView(tv3,&nbsp;lp2); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.setContentView(relativeLayout); &nbsp;&nbsp;&nbsp;&nbsp;}}生成的默认项目一起工作。android create project ....&nbsp;构建代码最少的GitHub存储库.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android