2010-10-29 8 views
14

Non riesco a ottenere un divisore personalizzato, utilizzando un Drawable che ho definito, per funzionare quando si utilizza uno ListActivity e non si crea un ListView personalizzato. Sembra quasi che quando la VM crea il proprio ListView per me, con lo ListActivity, utilizza un tema con il divisore predefinito fornito; e se provo a fornirne uno, nessun divisore appare nello ListView.Modifica di un divisore con setDivider in un ListActivity senza un ListView personalizzato?

So che posso creare un custom ListView utilizzando XML e definire Android: divisore su quello ListView e questo riconosce il mio divisore personalizzato Drawable. Ma preferirei lasciare che il ListActivity crei il proprio ListView, se riesco a capire come far funzionare il mio divisore.

Ecco il codice che sto usando ora:

public class Categories extends ListActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     final String[] OPTIONS = { 
      "Hello", 
      "Goodbye", 
      "Good Morning", 
      "Greetings", 
      "Toodaloo" 
     }; 

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(
      this, android.R.layout.simple_list_item_1, OPTIONS); 
     setListAdapter(adapter); 

     ListView lv = getListView(); 
     PaintDrawable sage = new PaintDrawable(R.drawable.sage); 
     lv.setDivider(sage); 
     lv.setDividerHeight(1); 
    } 
} 

risposta

36

ho capito. Il problema non aveva nulla a che fare con ListActivity che generava un ListView per me. Era nel modo in cui stavo definendo il divisore nel codice Java.

Ci sono due modi che vedo per definire il divisore (confine tra le righe ListView) su una ListView che viene gonfiato automaticamente da un ListActivity, se si vuole definire il colore in XML:

Metodo 1:

In res/valori/colors.xml, inserire il seguente:

<resources> 
<color name="sage">#cceebb</color> 
</resources> 

Nella classe ListActivity-estensione, fare questo:

ListView lv = getListView(); 
ColorDrawable sage = new ColorDrawable(this.getResources().getColor(R.color.sage)); 
lv.setDivider(sage); 
lv.setDividerHeight(1); 

Metodo 2:

In res/valori/colors.xml:

<resources> 
<drawable name="sage">#cceebb</drawable> 
</resources> 

E nella tua classe che estende ListActivity:

ListView lv = getListView(); 
ColorDrawable sage = new ColorDrawable(this.getResources().getColor(R.drawable.sage)); 
lv.setDivider(sage); 
lv.setDividerHeight(1); 
3

Prova questo codice:

searchText.setBackgroundColor(getResources().getColor(R.color.wordColorBlack)); 
ListView lv = getListView(); 
lv.setDivider(getResources().getDrawable(R.drawable.divider2)); 
lv.setDividerHeight(2); 
3

Per impostare divisore in ListView programatically:

Questi codice mettere dentro nel vostro .java Classe

ListView lv = (ListView) findViewById(R.id.lv); 
    lv.setDivider(getResources().getDrawable(R.drawable.drawable_divider)); 
    lv.setDividerHeight(1); 

Creazione Drawable: {res> drawable>drawable_divider.xml}

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 

    android:shape="rectangle"> 

    <solid android:color="#ececec"></solid> 

</shape>