Cambiare un divisore con setDivider in una ListActivity senza ListView personalizzato?
-
27-09-2019 - |
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);
}
}
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);