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);
    }
}
Foi útil?

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);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top