2012-02-02 6 views
7

È possibile avere un titolo su più righe in una finestra di avviso di Android? Ho provato un paio di soluzioni pubblicate qui ma nessuno ha funzionato per me. Finisco sempre con il titolo che mostra 3 punti (...) stringa per titolo. Qualsiasi codice di esempio o esempio di lavoro relativo allo stesso sarebbe molto apprezzato.Come creare una finestra di avviso con un titolo su più righe?

+0

Dai un'occhiata alla mia risposta e considera di contrassegnarla come corretta. – Radu

+0

considera la mia risposta, è fastidioso avere risposte "corrette" fuorvianti su SO. – Radu

risposta

1

Se si utilizza dialogo avviso quindi titolo può contenere al massimo la linea , altrimenti si deve andare con finestra di dialogo personalizzata.

+0

Ho provato con 3 righe stringa titolo è stato in grado di visualizzare solo 2 e la terza stringa non è stata visualizzata. – Manju

+0

Questa risposta è errata e non dovrebbe essere la risposta accettata. –

2

questo è il modo per impostare il titolo

AlertDialog.Builder builder = new AlertDialog.Builder(Class name.this); 
    builder.setTitle("Welcome to App,\n There are no App.\n Add a new data."); 
+4

Penso che non puoi avere più di 2 righe in una barra del titolo, ho provato il tuo campione e sono riuscito a ottenere il titolo per 2 righe e mancava la terza riga. Cosa succede se la prima stringa è composta da più di 30 caratteri? – Manju

20

è necessario utilizzare builder.setCustomTitle():

AlertDialog.Builder builder = new AlertDialog.Builder(context); 
TextView textView = new TextView(context); 
textView.setText("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur " + 
       "tincidunt condimentum tristique. Vestibulum ante ante, pretium porttitor " + 
       "iaculis vitae, congue ut sem. Curabitur ac feugiat ligula. Nulla " + 
       "tincidunt est eu sapien iaculis rhoncus. Mauris eu risus sed justo " + 
       "pharetra semper faucibus vel velit."); 
builder.setCustomTitle(textView); 

documentazione è qui: AlertDialog.builder

enter image description here

+0

'setCustomTitle()' non è un metodo di 'AlertDialog.Builder'. –

+0

Siamo spiacenti, mi dispiace, hai ragione. 'setCustomTitle (String)' non esiste, ma 'setCustomTitle (View)', come hai usato, fa. –

+0

Sì, ha funzionato perfettamente. Grazie!! –

0

In realtà la "corretta" risposta qui è sbagliato. Risulta che è possibile impostare le linee massime su più di 2 in AlertDialog. Ecco un esempio:

AlertDialog closePlayerDialog; 
......... 
Builder builder = new AlertDialog.Builder(this); 
builder.setMessage(getString(R.string.AskToClosePlayer)) 
     .setPositiveButton(R.string.Yes, dialogClickListener) 
     .setNeutralButton(R.string.NoJustCloseApp, dialogClickListener) 
     .setNegativeButton(R.string.NoContinue, dialogClickListener); 
closePlayerDialog = builder.create(); 
closePlayerDialog.setOnShowListener(new DialogInterface.OnShowListener() { 
    public void onShow(DialogInterface dialog) { 
     float textSize = 12.0f; 
     Button positive = closePlayerDialog.getButton(AlertDialog.BUTTON_POSITIVE); 
     positive.setTextSize(TypedValue.COMPLEX_UNIT_DIP, textSize); 
     positive.setMaxLines(3); 
     Button neutral = closePlayerDialog.getButton(AlertDialog.BUTTON_NEUTRAL); 
     neutral.setTextSize(TypedValue.COMPLEX_UNIT_DIP, textSize); 
     neutral.setMaxLines(3); 
     Button negative = closePlayerDialog.getButton(AlertDialog.BUTTON_NEGATIVE); 
     negative.setTextSize(TypedValue.COMPLEX_UNIT_DIP, textSize); 
     negative.setMaxLines(3); 
    } 
}); 
closePlayerDialog.setCancelable(false);  
closePlayerDialog.show(); 

Fondamentalmente è modificare i componenti del AlertDialog onShow, utilizzando DialogInterface.onShowListener.

+0

Non è stato mostrato come modificare il numero di righe del titolo, ma dei pulsanti. Non c'è 'dialog.getTitleBar' o simile? –

+0

@ LuisA.Florit In realtà hai ragione Luis. In tal caso, puoi eliminare la barra del titolo predefinita, esattamente come desideri, e quindi inserire la tua vista testo personalizzata nella parte superiore del tuo layout personalizzato. La riga che stai cercando di cancellare la barra del titolo esistente è: dialog.requestWindowFeature (Window.FEATURE_NO_TITLE); – Radu

Problemi correlati