2015-11-03 13 views
8

ho questa classe:AlertDialog non mostra i divisori in un elenco

public class PageDetailInfoView extends FrameLayout { 

//few constructors and methods 

//method to show an AlertDialog with a list 
private void openDialog(){ 

    List<String> mTags = new ArrayList<String>(); 
    mTags.add("Item1"); 
    mTags.add("Item2"); 
    mTags.add("Item3"); 
    mTags.add("Item4"); 
    mTags.add("Item5"); 
    mTags.add("Item6"); 

    final CharSequence[] tags = mTags.toArray(new String[mTags.size()]); 
    AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); 
    builder.setTitle("Title"); 
    builder.setItems(tags, new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int item) { 
     //do something 
     } 
    }); 

    Dialog alertDialogObject = builder.create(); 
    alertDialogObject.show(); 


} 

dialogo Alert viene aperto dopo richiamare OpenDialog(), ma la cosa è che non presenta i divisori tra gli elementi. Vorrei ottenere questo:
http://2.bp.blogspot.com/-i00d8VG6WsQ/UrGIeyb-8II/AAAAAAAAHwA/8MPWP5qrQ78/s500/alertdialog-with-simple-listview.png

e, in effetti, ho capito, ma senza i divisori grigi.
Qualche idea sul perché?

enter image description here

risposta

26

Change AlertDialog elementi dell'elenco colore divisore come:

AlertDialog alertDialogObject = dialogBuilder.create(); 
ListView listView=alertDialogObject.getListView(); 
listView.setDivider(new ColorDrawable(Color.BLUE)); // set color 
listView.setDividerHeight(2); // set height 
alertDialogObject.show(); 
+0

Grazie ma non riesco ad accedere a .getListView() – JoCuTo

+2

Funziona! Ma devi modificare 'Dialog alertDialogObject = dialogBuilder.create();' a 'AlertDialog alertDialogObject = dialogBuilder.create(); ' –

+0

sì funziona! Grazie mille – JoCuTo

0

È probabilmente perché si esegue la vostra applicazione su Android 5.0+ che ha il design dei materiali.

per ottenere l'aspetto "vecchio", basta costruire il dialogo con lo stile Holo:

ContextThemeWrapper themedContext = new ContextThemeWrapper(getContext(), android.R.style.Theme_Holo_Light_Dialog_NoActionBar); 
AlertDialog.Builder builder = new AlertDialog.Builder(themedContext); 
// ... then create your dialog 

Anche se questo potrebbe sembrare strano per alcuni utenti (in particolare su Lollipop e Marshmallow, quindi vi consiglio di guardare in utilizzando personalizzato viste per la tua finestra di dialogo

+0

Grazie Daniel, buon punto, ma non funziona, ancora senza divisori :( – JoCuTo

+0

Puoi aggiungere uno screenshot sui tuoi progressi attuali? –

+0

screenshot su aggiunto – JoCuTo