top studio layout_below español ejemplo constraint bottom align java android relativelayout

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



relativelayout android studio (4)

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.

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


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<str.length; i++) { tv[i] = new TextView(this); RelativeLayout.LayoutParams params=new RelativeLayout.LayoutParams ((int)LayoutParams.WRAP_CONTENT,(int)LayoutParams.WRAP_CONTENT); params.leftMargin = 50; params.topMargin = i*50; tv[i].setText(str[i]); tv[i].setTextSize((float) 20); tv[i].setPadding(20, 50, 20, 50); tv[i].setLayoutParams(params); rl.addView(tv[i]); }


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.