Modification d'un diviseur avec setDivider dans un ListActivity sans ListView sur mesure?
-
27-09-2019 - |
Question
Je ne peux pas sembler obtenir un diviseur personnalisé, en utilisant un Drawable j'ai défini, au travail lors de l'utilisation d'un ListActivity
et non la création d'un ListView
personnalisé. Il semble presque comme quand la machine virtuelle crée sa propre ListView
pour moi, avec le ListActivity
, il utilise un thème avec le diviseur par défaut fourni; et si je tente de fournir un, pas de séparations apparaissent dans le ListView
du tout.
Je sais que je peux créer un ListView
personnalisé en utilisant XML et définir android: diviseur sur ce ListView
, et cela ne reconnaît mon diviseur personnalisé Drawable. Mais je préférerais laisser le ListActivity
créer son propre ListView
, si je peux comprendre comment obtenir mon propre travail diviseur sur elle.
Voici le code que je utilise maintenant:
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);
}
}
La solution
Je compris. La question n'a rien à voir avec le ListActivity générer un ListView pour moi. Il était dans la façon dont je le diviseur dans la définition du code Java.
Il y a deux façons que je vois de définir le diviseur (frontière entre les lignes ListView) sur un ListView qui est gonflé automatiquement à partir d'un ListActivity, si vous voulez définir la couleur en XML:
Méthode 1:
res / valeurs / Colors.xml, mettez les éléments suivants:
<resources>
<color name="sage">#cceebb</color>
</resources>
Dans votre classe ListActivity-extension, procédez comme suit:
ListView lv = getListView();
ColorDrawable sage = new ColorDrawable(this.getResources().getColor(R.color.sage));
lv.setDivider(sage);
lv.setDividerHeight(1);
Méthode 2:
res / valeurs / Colors.xml:
<resources>
<drawable name="sage">#cceebb</drawable>
</resources>
Et dans votre classe qui étend ListActivity:
ListView lv = getListView();
ColorDrawable sage = new ColorDrawable(this.getResources().getColor(R.drawable.sage));
lv.setDivider(sage);
lv.setDividerHeight(1);
Autres conseils
Pour diviseur situé dans listview programatically :
Ces codes mis à l'intérieur de votre .java Classe
ListView lv = (ListView) findViewById(R.id.lv);
lv.setDivider(getResources().getDrawable(R.drawable.drawable_divider));
lv.setDividerHeight(1);
Création 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>
Essayez ce code:
searchText.setBackgroundColor(getResources().getColor(R.color.wordColorBlack));
ListView lv = getListView();
lv.setDivider(getResources().getDrawable(R.drawable.divider2));
lv.setDividerHeight(2);