2010-10-29 10 views
14

Parece que no puedo obtener un divisor personalizado, utilizando un Drawable que he definido, para que funcione cuando se usa un ListActivity y no se crea un ListView personalizado. Casi parece que cuando la VM crea su propio ListView para mí, con el ListActivity, usa un tema con el divisor predeterminado proporcionado; y si intento proporcionar uno, no aparecen separadores en el ListView.¿Cambiar un divisor con setDivider en una ListActivity sin un ListView personalizado?

sé que puedo crear una costumbre ListView el uso de XML y definir androide: Divisor en ese ListView, y esto lo reconoce mi Disponibles divisor de costumbre. Pero preferiría dejar que ListActivity cree su propio ListView, si puedo encontrar la manera de hacer que mi propio divisor trabaje en él.

Aquí está el código que estoy utilizando ahora:

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); 
    } 
} 

Respuesta

36

lo he descubierto. El problema no tiene nada que ver con que ListActivity genere un ListView para mí. Fue en la forma en que estaba definiendo el divisor en el código de Java.

Hay dos maneras que veo para definir el divisor (frontera entre filas ListView) en un ListView que se infla automáticamente desde un ListActivity, si desea definir el color en XML:

Método 1:

En res/valores/colors.xml, colocamos los siguientes:

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

en su clase que se extiende ListActivity-, hacer esto:

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

Método 2:

En res/valores/colors.xml:

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

Y en su clase que se extiende ListActivity:

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

Prueba este código:

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

Para ajustar el divisor en vista de lista mediante programación:

Estos código de poner dentro de su .java Clase

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

Creación Drawable: {res> dibujable>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> 
Cuestiones relacionadas