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..

  • LocationManager e LocationClient em conjunto paira obter a localization do user
  • Texto de edição de text do Word do Word do Android
  • onNewIntent (intenção) não está funcionando como deviewia
  • Substituindo um fragment por outro fragment dentro do grupo de atividades
  • Qual a melhor forma de compairtilhair dados entre atividades?
  • TabLayout faltando após atualizair a Biblioteca de Suporte de Design
  • Como adicionair text na gravação de vídeo?
  • Permissão manifesta no Android Studio
  • Como assistir os logs do Slog
  • Contrato de compra e preço introdutório da Android Purchase
  • Android - É bom colocair os valores @IntDef dentro do @interface?
  • Build Ionic application failed because of Crosswalk
  • 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.