2011-09-07 12 views
7

Sto creando una finestra di dialogo che è come una schermata di accesso contenente due caselle di testo e due pulsanti. Sono in grado di crearlo, ma il mio problema è che le due caselle di testo di modifica si sovrappongono tra loro (la seconda casella di testo di modifica si sovrappone alla prima). Può essere un semplice ma da quando sono nuovo ad Android sono bloccato con esso. Pls mi aiuta a risolverlo. Ecco il codice sorgenteImposta più caselle di testo in una finestra di dialogo in Android

public class LoginActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 

    public void onCreate(Bundle savedInstanceState) {       
     super.onCreate(savedInstanceState);       
     setContentView(R.layout.main); 
     Button btn= (Button) findViewById(R.id.btn_Login); 
     btn.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       showDialog(0); 

      } 
     }); 
    } 

     protected Dialog onCreateDialog(int id) 
     { 
     final AlertDialog.Builder alert = new AlertDialog.Builder(this);       
     final EditText input = new EditText(this); 
     final EditText input1 = new EditText(this); 
     alert.setIcon(R.drawable.icon); 
     alert.setTitle("Login"); 
     alert.setView(input); 
     alert.setView(input1); 

     alert.setView(input1); 
     alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {    
      public void onClick(DialogInterface dialog, int whichButton) {    
       String value = input.getText().toString().trim();      
       Toast.makeText(getApplicationContext(), value, Toast.LENGTH_SHORT).show(); 
       }      });     
     alert.setNegativeButton("Cancel",     
       new DialogInterface.OnClickListener() {       
      public void onClick(DialogInterface dialog, int whichButton) {   
       dialog.cancel(); }  });   
     return alert.create();  
     } 
    } 
+0

Preferisco andare per fare il login a schermo un'attività separata e definire le layout in xml - se questa è un'opzione per te – DonGru

risposta

4

È anche possibile creare un XML di layout per le finestre di dialogo. Prima di chiamare il dialogo solo fare:

myDialog.setContentView(R.layout.my_dialog_layout); 
17

Che cosa succede se si prova con un LinerLayout:

LinearLayout lila1= new LinearLayout(this); 
lila1.setOrientation(LinearLayout.VERTICAL); 
final EditText input = new EditText(this); 
final EditText input1 = new EditText(this); 
lila1.addView(input); 
lila1.addView(input1); 
alert.setView(lila1); 

Ti piace questa:

public class LoginActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 

public void onCreate(Bundle savedInstanceState) {       
    super.onCreate(savedInstanceState);       
    setContentView(R.layout.main); 
    Button btn= (Button) findViewById(R.id.btn_Login); 
    btn.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      showDialog(0); 

     } 
    }); 
} 

    protected Dialog onCreateDialog(int id) 
    { 
    final AlertDialog.Builder alert = new AlertDialog.Builder(this);  

    LinearLayout lila1= new LinearLayout(this); 
    lila1.setOrientation(1); //1 is for vertical orientation 
    final EditText input = new EditText(this); 
    final EditText input1 = new EditText(this); 
    lila1.addView(input); 
    lila1.addView(input1); 
    alert.setView(lila1); 

     alert.setIcon(R.drawable.icon); 
     alert.setTitle("Login"); 

     alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {    
      public void onClick(DialogInterface dialog, int whichButton) {    
       String value = input.getText().toString().trim();      
       Toast.makeText(getApplicationContext(), value, Toast.LENGTH_SHORT).show(); 
       }      });     
     alert.setNegativeButton("Cancel",     
       new DialogInterface.OnClickListener() {       
      public void onClick(DialogInterface dialog, int whichButton) {   
       dialog.cancel(); }  });   
     return alert.create();  
     } 
    } 

e funziona perfettamente: vi invito a copia incolla :)

+1

Force chiude la mia app se tento di includere il layout lineare con la finestra di dialogo. – SSG

+0

Mi fai dubitare della mia sanità mentale :), provo il nuovo codice sopra da solo ... provalo: 2 minuti in alto. All'inizio ho dimenticato di commentare uno dei 3 alert.setView e ho ottenuto anche una chiusura forzata. – mthpvg

+1

Questo è proprio quello che stavo cercando. Grazie. – Hama

0

thnx men, è lavoro !!! ma in questo caso faccio un errror, così posso cambiare questo:

lila1.setOrientation(1); //1 is for vertical orientation 

su questo:

lila1.setOrientation(LinearLayout.VERTICAL); 
Problemi correlati