Crea un nuevo TextView programmáticamente y luego muéstralo debajo de otro TextView

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

Necesito hacer algo así … para que se muestre como

 one two asdfasdfsomething 

en la pantalla..

    Si no es importante utilizar un RelativeLayout, puede usar LinearLayout y hacer esto:

     LinearLayout linearLayout = new LinearLayout(this); linearLayout.setOrientation(LinearLayout.VERTICAL); 

    Hacer esto le permite evitar el método addRule que ha probado. Simplemente puede usar addView () para agregar nuevas TextViews.

    Código completo:

     String[] textArray = {"One", "Two", "Three", "Four"}; LinearLayout linearLayout = new LinearLayout(this); setContentView(linearLayout); linearLayout.setOrientation(LinearLayout.VERTICAL); for( int i = 0; i < textArray.length; i++ ) { TextView textView = new TextView(this); textView.setText(textArray[i]); linearLayout.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() { @Overr 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()); layoutParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); layoutParams.addRule(RelativeLayout.BELOW, recentView.getId()); textView.setText("Time: "+System.currentTimeMillis()); relativeLayout.addView(textView, layoutParams); recentView = textView; } }); } 

    Esto se puede modificar para mostrar cada elemento de una matriz de Cadenas en diferentes TextViews.

    Prueba 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 

    No está asignando ningún id. A la vista de texto, pero está usando tv.getId() para pasarlo al método addRule como parámetro. Intenta establecer una identificación única a través de tv.setId(int) .

    También podría usar el LinearLayout con orientación vertical, que en realidad podría ser más fácil. Prefiero LinearLayout sobre RelativeLayouts si no es necesario.