Cambio de un divisor con setDivider en un ListActivity sin un ListView personalizada?
-
27-09-2019 - |
Pregunta
Me parece que no puede conseguir un divisor personalizado, utilizando una Disponibles he definido, al trabajo cuando se utiliza un ListActivity
y no se cree una ListView
personalizado. Casi parece que cuando la máquina virtual crea su propia ListView
para mí, con la ListActivity
, que utiliza un tema con el divisor predeterminado proporcionado; y si lo intento de proporcionar una, sin divisiones aparecen en el ListView
en absoluto.
Yo sé que puedo crear un ListView
personalizado utilizando XML y definir androide: Divisor en ese ListView
, y esto lo reconoce mi costumbre divisor Disponibles. Pero yo preferiría dejar que el ListActivity
crear su propio ListView
, si puedo encontrar la manera de conseguir mi propio divisor de trabajar en él.
Este es el código que estoy usando 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);
}
}
Solución
lo he descubierto. La cuestión no tenía nada que ver con la generación de un ListActivity ListView para mí. Fue en la forma en que estaba definiendo el divisor en código 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, poner el siguiente:
<resources>
<color name="sage">#cceebb</color>
</resources>
En la clase 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);
Otros consejos
Para configurar el divisor en vista de lista mediante programación
Estos código de poner dentro de su .java Class
ListView lv = (ListView) findViewById(R.id.lv);
lv.setDivider(getResources().getDrawable(R.drawable.drawable_divider));
lv.setDividerHeight(1);
Creación de 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>
Prueba este código:
searchText.setBackgroundColor(getResources().getColor(R.color.wordColorBlack));
ListView lv = getListView();
lv.setDivider(getResources().getDrawable(R.drawable.divider2));
lv.setDividerHeight(2);