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

hot*_*309 14 android drawable listactivity divider android-listview

在使用a ListActivity而不是创建自定义时,我似乎无法使用我已定义的Drawable来获得自定义分隔符ListView.这似乎就像当VM ListView为我创建它自己的时候ListActivity,它使用了一个带有默认分隔符的主题; 如果我试图提供一个,根本就没有分隔符ListView.

我知道我可以ListView使用XML 创建自定义并在其上定义android:divider ListView,这确实识别我的自定义分隔符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);
    }
}
Run Code Online (Sandbox Code Playgroud)

hot*_*309 37

我想到了.该问题与为我生成ListView的ListActivity无关.这是我如何在Java代码中定义分隔符.

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

方法1:

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

<resources>
 <color name="sage">#cceebb</color>
</resources>
Run Code Online (Sandbox Code Playgroud)

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

ListView lv = getListView();
ColorDrawable sage = new ColorDrawable(this.getResources().getColor(R.color.sage));
lv.setDivider(sage);
lv.setDividerHeight(1);
Run Code Online (Sandbox Code Playgroud)

方法2:

在res/values/colors.xml中:

<resources>
 <drawable name="sage">#cceebb</drawable>
</resources>
Run Code Online (Sandbox Code Playgroud)

在您的类中扩展ListActivity:

ListView lv = getListView();
ColorDrawable sage = new ColorDrawable(this.getResources().getColor(R.drawable.sage));
lv.setDivider(sage);
lv.setDividerHeight(1);
Run Code Online (Sandbox Code Playgroud)