Добавление нескольких TextView на Android во время выполнения

#android #view #runtime

#Android #Вид #время выполнения

Вопрос:

Я пытаюсь добавить множественные текстовые представления в RelativeLayout во время выполнения. причина в том, что список должен быть создан в зависимости от выбора пользователя.

Я знаю, как добавить 1 TextView. но когда я ввел код в цикл и попытался создать больше 1, он просто ничего не показывает..

пожалуйста, помогите,

  int left=70,top=25;
 for (String s:startLetterPos){
        params.leftMargin = left;
        top  = 70;
        params.topMargin = top;
        TextView tv = new TextView(this);
        tv.setLayoutParams(params);
        tv.setText(s);
        tv.setVisibility(View.VISIBLE);
        tv.setTextSize(20);

        testLayout.addView(tv);

    }
  

РЕДАКТИРОВАТЬ: полный код действия:

 package com.fgdvir.psychowords;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.RelativeLayout.LayoutParams;
import android.widget.TextView;

public class WordTest extends Activity {
    RelativeLayout testLayout;
    int            displayWidth, displayHeight;
    ArrayList<String> startLetterPos = new ArrayList<String>();
    //private int[] startLetterPos = new int[26];
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.word_test);

    startLetterPos = getIntent().getStringArrayListExtra("test");

    testLayout = (RelativeLayout) findViewById(R.id.word_test);
    create_questions();
    // Get Screen size
    /*
     * Display display = getWindowManager().getDefaultDisplay(); Point size = new `      `Point(); display.getSize(size);
     * displayWidth = size.x; displayHeight = size.y;
     */

}

public void create_questions() {
    int left=70,top=25;
    LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT
            , LayoutParams.WRAP_CONTENT);
    for (String s:startLetterPos){
        params.leftMargin = left;
        top  = 70;
        params.topMargin = top;
        TextView tv = new TextView(this);
        tv.setLayoutParams(params);
        tv.setText(s);
        tv.setVisibility(View.VISIBLE);
        tv.setTextSize(20);

        testLayout.addView(tv);

    }

}
  

}

Комментарии:

1. добавьте код, в котором выполняется этот код.

2. Я отредактировал свой код и добавил полную активность, но это не очень важно, потому что работает тот же код без for (когда он создает только один TextView).

Ответ №1:

итак, я разобрался, я до сих пор не знаю, почему это не работает, но я нашел другой способ. Я добавил текст в LinearLayout, а затем LinearLayout в мой относительный макет:

 LinearLayout lL = new LinearLayout(this);
    lL.setOrientation(LinearLayout.VERTICAL);
    LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT
            , LayoutParams.WRAP_CONTENT);
    for (int i = 0; i<26; i  ){
        String s = startLetterPos.get(i);
        TextView tv = new TextView(this);
        tv.setId(i);
        tv.setText(s);
        tv.setTextColor(Color.WHITE);
        tv.setTextSize(20);
        if (i != 0 ){
        params.addRule(RelativeLayout.BELOW, i-1);
        }

        lL.addView(tv,params);

    }
    testLayout.addView(lL);

}