Alterar um divisor com o SetDivider em uma ListActivity sem um ListView personalizado?
-
27-09-2019 - |
Pergunta
Não consigo obter um divisor personalizado, usando um desenho que eu defini, para trabalhar ao usar um ListActivity
e não criar um costume ListView
. Quase parece que quando a VM cria seu próprio ListView
Para mim, com o ListActivity
, ele usa um tema com o divisor padrão fornecido; E se eu tentar fornecer um, nenhum divisor aparece no ListView
de forma alguma.
Eu sei que posso criar um costume ListView
Usando XML e defina Android: divisor nisso ListView
, e isso reconhece meu divisor personalizado desenhado. Mas eu preferiria apenas deixar o ListActivity
criar seu próprio ListView
, se eu puder descobrir como fazer meu próprio divisor trabalhar nisso.
Aqui está o código que estou usando agora:
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);
}
}
Solução
Eu descobri. A questão não teve nada a ver com a ListActivity, gerando uma ListView para mim. Era como eu estava definindo o divisor no código Java.
Há duas maneiras que vejo para definir o divisor (fronteira entre linhas de listView) em um ListView que é inflado automaticamente a partir de uma listatividade, se você deseja definir a cor no XML:
Método 1:
Em res/valores/colors.xml, coloque o seguinte:
<resources>
<color name="sage">#cceebb</color>
</resources>
Na sua aula de extensão da lista, faça isso:
ListView lv = getListView();
ColorDrawable sage = new ColorDrawable(this.getResources().getColor(R.color.sage));
lv.setDivider(sage);
lv.setDividerHeight(1);
Método 2:
Em res/valores/colors.xml:
<resources>
<drawable name="sage">#cceebb</drawable>
</resources>
E em sua classe que estende a ListActivity:
ListView lv = getListView();
ColorDrawable sage = new ColorDrawable(this.getResources().getColor(R.drawable.sage));
lv.setDivider(sage);
lv.setDividerHeight(1);
Outras dicas
Para definir o divisor no ListView programaticamente:
Esses código colocados dentro do seu .Java Classe
ListView lv = (ListView) findViewById(R.id.lv);
lv.setDivider(getResources().getDrawable(R.drawable.drawable_divider));
lv.setDividerHeight(1);
Criando trajes: {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>
Experimente este código:
searchText.setBackgroundColor(getResources().getColor(R.color.wordColorBlack));
ListView lv = getListView();
lv.setDivider(getResources().getDrawable(R.drawable.divider2));
lv.setDividerHeight(2);