Как разметить Представления в 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);
231
задан Ciro Santilli 新疆改造中心法轮功六四事件 2 February 2016 в 07:22
поделиться

2 ответа

Из того, что мне удалось собрать воедино, вы должны добавить представление, используя LayoutParams.

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

Вся заслуга sechastain, чтобы относительно позиционировать элементы программно, вы должны присвоить им идентификаторы.

TextView tv1 = new TextView(this);
tv1.setId(1);
TextView tv2 = new TextView(this);
tv2.setId(2);

Затем addRule(RelativeLayout.RIGHT_OF, tv1.getId());

195
ответ дан 23 November 2019 в 03:37
поделиться

позвонить

tv1.setId(1) 

после

tv1.setText("A");
6
ответ дан 23 November 2019 в 03:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: