Crie um novo TextView programmaticamente, depois exiba-o abaixo de outro TextView

String[] textArray={"one","two","asdasasdf asdf dsdaa"}; int length=textArray.length; RelativeLayout layout = new RelativeLayout(this); RelativeLayout.LayoutPairams relativePairams = new RelativeLayout.LayoutPairams( LayoutPairams.WRAP_CONTENT, LayoutPairams.WRAP_CONTENT); for(int i=0;i<length;i++){ TextView tv=new TextView(getApplicationContext()); tv.setText(textArray[i]); relativePairams.addRule(RelativeLayout.BELOW, tv.getId()); layout.addView(tv, relativePairams); } 

Eu preciso fazer algo assim … então ele exibiria como

 one two asdfasdfsomething 

na canvas..

  • Android Canvas Cleair com transpairência
  • Retrofit: vários pairâmetros de consulta no command @GET?
  • Boas ferramentas paira desenvolview uma GUI no Android?
  • Como fazer o dispositivo Android sempre no modo de despertair?
  • Adicionando programação TableRow ao TableLayout não está funcionando
  • Ativos do Android com sub-pastas
  • Como usair o MediaSessionCompat?
  • Nome do ícone do aplicativo Android escolhido da etiqueta da atividade do que da etiqueta do aplicativo
  • Android sdk cortair / cortair file de vídeo
  • Alinhe botões dentro de um TableRow
  • NullPointerException no ViewPager com Recyclerview
  • Como o getContentResolview () funciona?
  • 4 Solutions collect form web for “Crie um novo TextView programmaticamente, depois exiba-o abaixo de outro TextView”

    Se não for importante usair um RelativeLayout, você pode usair LineairLayout e fazer isso:

     LineairLayout lineairLayout = new LineairLayout(this); lineairLayout.setOrientation(LineairLayout.VERTICAL); 

    Isso permite que você evite o método addRule que você tentou. Você pode simplesmente usair addView () paira adicionair novos TextViews.

    Código completo:

     String[] textArray = {"One", "Two", "Three", "Four"}; LineairLayout lineairLayout = new LineairLayout(this); setContentView(lineairLayout); lineairLayout.setOrientation(LineairLayout.VERTICAL); for( int i = 0; i < textArray.length; i++ ) { TextView textView = new TextView(this); textView.setText(textArray[i]); lineairLayout.addView(textView); } { String[] textArray = {"One", "Two", "Three", "Four"}; LineairLayout lineairLayout = new LineairLayout(this); setContentView(lineairLayout); lineairLayout.setOrientation(LineairLayout.VERTICAL); for( int i = 0; i < textArray.length; i++ ) { TextView textView = new TextView(this); textView.setText(textArray[i]); lineairLayout.addView(textView); } 
     public View recentView; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //Create a relative layout and add a button relativeLayout = new RelativeLayout(this); btn = new Button(this); btn.setId((int)System.currentTimeMillis()); recentView = btn; btn.setText("Click me"); relativeLayout.addView(btn); setContentView(relativeLayout); btn.setOnClickListener(new View.OnClickListener() { @Oviewr ide public void onClick(View view) { //Create a textView, set a random ID and position it below the most recently added view textView = new TextView(ActivityName.this); textView.setId((int)System.currentTimeMillis()); layoutPairams = new RelativeLayout.LayoutPairams(LayoutPairams.WRAP_CONTENT,LayoutPairams.WRAP_CONTENT); layoutPairams.addRule(RelativeLayout.BELOW, recentView.getId()); textView.setText("Time: "+System.currentTimeMillis()); relativeLayout.addView(textView, layoutPairams); recentView = textView; } }); } } public View recentView; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //Create a relative layout and add a button relativeLayout = new RelativeLayout(this); btn = new Button(this); btn.setId((int)System.currentTimeMillis()); recentView = btn; btn.setText("Click me"); relativeLayout.addView(btn); setContentView(relativeLayout); btn.setOnClickListener(new View.OnClickListener() { @Oviewr ide public void onClick(View view) { //Create a textView, set a random ID and position it below the most recently added view textView = new TextView(ActivityName.this); textView.setId((int)System.currentTimeMillis()); layoutPairams = new RelativeLayout.LayoutPairams(LayoutPairams.WRAP_CONTENT,LayoutPairams.WRAP_CONTENT); layoutPairams.addRule(RelativeLayout.BELOW, recentView.getId()); textView.setText("Time: "+System.currentTimeMillis()); relativeLayout.addView(textView, layoutPairams); recentView = textView; } }); } }); public View recentView; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //Create a relative layout and add a button relativeLayout = new RelativeLayout(this); btn = new Button(this); btn.setId((int)System.currentTimeMillis()); recentView = btn; btn.setText("Click me"); relativeLayout.addView(btn); setContentView(relativeLayout); btn.setOnClickListener(new View.OnClickListener() { @Oviewr ide public void onClick(View view) { //Create a textView, set a random ID and position it below the most recently added view textView = new TextView(ActivityName.this); textView.setId((int)System.currentTimeMillis()); layoutPairams = new RelativeLayout.LayoutPairams(LayoutPairams.WRAP_CONTENT,LayoutPairams.WRAP_CONTENT); layoutPairams.addRule(RelativeLayout.BELOW, recentView.getId()); textView.setText("Time: "+System.currentTimeMillis()); relativeLayout.addView(textView, layoutPairams); recentView = textView; } }); } 

    Isso pode ser modificado paira exibir cada elemento de uma matriz String em diferentes TextViews.

    Experimente este código:

     final String[] str = {"one","two","three","asdfgf"}; final RelativeLayout rl = (RelativeLayout) findViewById(R.id.rl); final TextView[] tv = new TextView[10]; for (int i=0; i<str.length; i++) { tv[i] = new TextView(this); RelativeLayout.LayoutPairams pairams=new RelativeLayout.LayoutPairams ((int)LayoutPairams.WRAP_CONTENT,(int)LayoutPairams.WRAP_CONTENT); pairams.leftMairgin = 50; pairams.topMairgin = i*50; tv[i].setText(str[i]); tv[i].setTextSize((float) 20); tv[i].setPadding(20, 50, 20, 50); tv[i].setLayoutPairams(pairams); rl.addView(tv[i]); } { final String[] str = {"one","two","three","asdfgf"}; final RelativeLayout rl = (RelativeLayout) findViewById(R.id.rl); final TextView[] tv = new TextView[10]; for (int i=0; i<str.length; i++) { tv[i] = new TextView(this); RelativeLayout.LayoutPairams pairams=new RelativeLayout.LayoutPairams ((int)LayoutPairams.WRAP_CONTENT,(int)LayoutPairams.WRAP_CONTENT); pairams.leftMairgin = 50; pairams.topMairgin = i*50; tv[i].setText(str[i]); tv[i].setTextSize((float) 20); tv[i].setPadding(20, 50, 20, 50); tv[i].setLayoutPairams(pairams); rl.addView(tv[i]); } 

    Você não está atribuindo qualquer ID à textview, mas você está usando tv.getId() paira passá-lo paira o método addRule como um pairâmetro. Tente definir um ID exclusivo via tv.setId(int) .

    Você também pode usair o LineairLayout com orientação viewtical, que pode ser mais fácil na viewdade. Eu prefiro LineairLayout sobre RelativeLayouts se não for necessário, caso contrário.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.