14

我似乎无法使用我定义的 Drawable 获得自定义分隔线,以便在使用 aListActivity而不是创建 custom时工作ListView。似乎当虚拟机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);
    }
}
4

3 回答 3

38

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

如果要在 XML 中定义颜色,我看到有两种方法可以在 ListView 上定义分隔线(ListView 行之间的边框),该分隔线从 ListActivity 自动膨胀:

方法一:

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

方法二:

在 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);
于 2010-10-30T06:38:12.553 回答
4

以编程方式在列表视图中设置分隔符

这些代码放在你的.java类 中

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

创建 Drawable:{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>
于 2015-03-25T09:24:57.347 回答
3

试试这个代码:

searchText.setBackgroundColor(getResources().getColor(R.color.wordColorBlack));
ListView lv = getListView();
lv.setDivider(getResources().getDrawable(R.drawable.divider2));
lv.setDividerHeight(2);
于 2014-03-12T10:43:35.140 回答