Подтвердить что ты не робот

Программно добавляя элементы к относительной компоновке

Я везде искал ответ на этот вопрос. Я новичок в Android и пытаюсь добавить элементы в относительный макет программно через java вместо xml. Я создал тестовый класс, чтобы попробовать, но элементы сохраняют стекирование вместо правильного форматирования. Я просто хочу один TextView под другим на данный момент (в конечном итоге я буду использовать левые и правые параметры, но я начинаю просто. Что мне не хватает?

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ScrollView sv = new ScrollView(this);
    RelativeLayout ll = new RelativeLayout(this);
    ll.setId(99);
    sv.addView(ll);
    TextView tv = new TextView(this);
    tv.setText("txt1");
    tv.setId(1);
    TextView tv2 = new TextView(this);
    tv2.setText("txt2");
    tv2.setId(2);
    RelativeLayout.LayoutParams lay = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    lay.addRule(RelativeLayout.ALIGN_PARENT_TOP);
    ll.addView(tv, lay);
    RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    p.addRule(RelativeLayout.ALIGN_BOTTOM, tv.getId());
    ll.addView(tv2, p);  this.setContentView(sv);};
4b9b3361

Ответ 1

    p.addRule(RelativeLayout.ALIGN_BOTTOM, tv.getId());

Эта строка означает, что нижняя часть tv2 выровнена с нижней частью tv, другими словами, они будут перекрывать друг друга. Свойство, которое вы хотите, предположительно RelativeLayout.BELOW. Тем не менее, я настоятельно рекомендую вместо этого использовать xml.

Ответ 2

Использование:

p.addRule(RelativeLayout.BELOW, tv.getId());

Ответ 3

вам не хватает разных вещей, сначала ScrollView не имеет никаких мер, установите его с помощью LayoutParams.FILL_PARENT или WRAP_CONTENT, второй; он TextView1 неуместен, поэтому TextView2, установите положение TextView1 с lay.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ScrollView sv = new ScrollView(this);
    RelativeLayout ll = new RelativeLayout(this);
    ll.setId(99);

    sv.addView(ll, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

    TextView tv = new TextView(this);
    tv.setText("txt1");
    tv.setId(1);

    TextView tv2 = new TextView(this);
    tv2.setText("txt2");
    tv2.setId(2);
    RelativeLayout.LayoutParams lay = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    lay.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);
    ll.addView(tv, lay);
    RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    p.addRule(RelativeLayout.ALIGN_BOTTOM, tv.getId());
    ll.addView(tv2, p);  
this.setContentView(sv);};