2014-06-05 20 views
10

Sto lavorando su un'applicazione in cui devo creare più EditText e Spinner dinamicamente. Così ho iniziato a cercare per la soluzione in quanto non ho il permesso di usare Invisible proprietà in file XML. Ho cercato molto e ho ottenuto pochissimi esempi solo su stackoverflow. Li seguo e ho creato questo programma.Creazione EditText dinamicamente in Android

 **MainActivity.java code** 

public class MainActivity extends Activity { 

     RelativeLayout containerLayout; 
     static int totalEditTexts = 0; 
     Button button; 
     Context context; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    containerLayout = (RelativeLayout)findViewById(R.id.relative1); 
    button = (Button)findViewById(R.id.button1); 

    button.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View arg0) { 
    // TODO Auto-generated method stub 

    totalEditTexts++; 
    if (totalEditTexts > 100) 
    return; 
    EditText editText = new EditText(getBaseContext()); 
    containerLayout.addView(editText); 
     editText.setGravity(Gravity.RIGHT); 
    RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) editText.getLayoutParams(); 
     layoutParams.width = RelativeLayout.LayoutParams.MATCH_PARENT; 
     layoutParams.setMargins(23, 34, 0, 0); 
    // RelativeLayout.LayoutParams() 
     editText.setLayoutParams(layoutParams); 
    //if you want to identify the created editTexts, set a tag, like below 
    editText.setTag("EditText" + totalEditTexts); 
       } 
      }); 

}}

Quando sto facendo funzionare questo codice, che sta creando l'EditText quando il pulsante ottenuto cliccato. Ma solo una volta. Non so cosa succederà dopo. se sta creando un nuovo EditText o si sovrappone a quello vecchio, altrimenti non sta creando più di un EditText.

enter image description here

Qualcuno mi può spiegare che cosa devo fare ora per risolvere questo problema.

risposta

8

Ho risolto il mio problema con la semplice sostituzione RelativeLayout con LinearLayout

5

Il problema con l'utilizzo RelativeLayout e l'aggiunta di cose in modo dinamico è che se non si imposta la posizione relativa della vista, si sovrappone ogni altro. Pertanto, quando fai clic e aggiungi nuove visualizzazioni, le nuove viste vengono aggiunte ma si sovrappongono l'una all'altra. Ma aggiungendo un LinearLayout, le viste sono visibili l'una sotto l'altra in quanto è possibile impostare l'orientamento su verticale.