在ListActivity中使用setDivider更改分隔符而不使用自定义ListView?

时间:2010-10-29 04:53:46

标签: android android-listview drawable listactivity divider

在使用ListActivity而不是创建自定义ListView时,我似乎无法使用我已定义的Drawable来使用自定义分隔符。几乎看起来当VM为我创建自己的ListView时,使用ListActivity,它使用带有默认分隔符的主题;如果我尝试提供一个,ListView根本不会出现分隔符。

我知道我可以使用XML创建自定义ListView并在ListView上定义android:divider,这确实识别我的自定义分隔符Drawable。但我更愿意让ListActivity创建自己的ListView,如果我能弄明白如何让我自己的分频器工作。

这是我现在使用的代码:

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);
    }
}

3 个答案:

答案 0 :(得分:36)

我明白了。该问题与为我生成ListView的ListActivity无关。这就是我在Java代码中定义分隔符的方式。

如果要在XML中定义颜色,我可以通过两种方式在ListView上定义分隔符(ListView行之间的边界),该分隔符从ListActivity自动膨胀:

方法1:

在res / values / colors.xml中,输入以下内容:

<resources>
 <color name="sage">#cceebb</color>
</resources>

在ListActivity扩展类中,执行以下操作:

ListView lv = getListView();
ColorDrawable sage = new ColorDrawable(this.getResources().getColor(R.color.sage));
lv.setDivider(sage);
lv.setDividerHeight(1);

方法2:

在res / values / colors.xml中:

<resources>
 <drawable name="sage">#cceebb</drawable>
</resources>

在您的类中扩展ListActivity:

ListView lv = getListView();
ColorDrawable sage = new ColorDrawable(this.getResources().getColor(R.drawable.sage));
lv.setDivider(sage);
lv.setDividerHeight(1);

答案 1 :(得分:3)

试试这段代码:

searchText.setBackgroundColor(getResources().getColor(R.color.wordColorBlack));
ListView lv = getListView();
lv.setDivider(getResources().getDrawable(R.drawable.divider2));
lv.setDividerHeight(2);

答案 2 :(得分:3)

以编程方式在listview中设置分隔符

这些代码放在 .java

   ListView lv = (ListView) findViewById(R.id.lv);
   lv.setDivider(getResources().getDrawable(R.drawable.drawable_divider));
   lv.setDividerHeight(1);

创建可绘制:{res&gt; drawable&gt; 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>