Domanda

Non riesco a ottenere un divisore personalizzato, utilizzando un Drawable che ho definito, al lavoro quando si utilizza un ListActivity e non la creazione di un ListView personalizzato. Sembra quasi come quando la macchina virtuale crea il proprio ListView per me, con il ListActivity, utilizza un tema con il divisore predefinito fornito; e se provo a fornire uno, senza divisori appaiono nel ListView a tutti.

So che posso creare un ListView personalizzato utilizzando XML e definire Android: divisorio su quel ListView, e questo lo fa riconoscere la mia divisore personalizzato Drawable. Ma io preferirei lasciare solo il ListActivity creare il proprio ListView, se io riesco a capire come ottenere il mio divisorio lavorare su di esso.

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);
    }
}
È stato utile?

Soluzione

ho capito. La questione non aveva nulla a che fare con la generazione di un ListActivity ListView per me. E 'stato nel modo in cui mi è stato la definizione del divisorio 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);

Altri suggerimenti

Per impostare divisore in ListView programatically :

Si tratta di codice messo dentro nel tuo java Class

   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>

Prova questo codice:

searchText.setBackgroundColor(getResources().getColor(R.color.wordColorBlack));
ListView lv = getListView();
lv.setDivider(getResources().getDrawable(R.drawable.divider2));
lv.setDividerHeight(2);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top