自定义SectionIndexer for android listview。显示的索引不适合透明背景!

时间:2011-01-08 23:24:55

标签: android listview

对于我在android中的listview,我使用的是自定义baseadapter,它在列表的各项之间创建了日期分隔的标题。列表视图上启用了FastScto​​ll,并且此适配器还实现了SectionIndexer,以便在使用缩略图滚动进行滚动时将短日期(例如2月14日)显示为索引。它工作正常,除了这些显示索引后面的透明背景不能完全覆盖短日期。最终looking like this

显示索引的字体是否可以缩小或背景拉伸以使日期完全出现在背景图像中?

2 个答案:

答案 0 :(得分:2)

通过使用此网址作为灵感来覆盖FastScroller的绘图成员,我能够解决同样的问题customize fastScroller(change overlay and scroller) for Android

虽然您不需要创建新实例来修改油漆。

KitKat更新:KitKat不需要这样做,因为它们现在可以正确处理更长的文本长度。您应该将此代码用于API的< = 18。

AbsListView listview = (AbsListView) findViewById(..);
try {
    Field fieldFastScroller = AbsListView.class.getDeclaredField("mFastScroller");
    fieldFastScroller.setAccessible(true);
    Object fastScroller = fieldFastScroller.get(listview);

    Field fieldPaint = fastScroller.getClass().getDeclaredField("mPaint");
    fieldPaint.setAccessible(true);
    Paint paint = (Paint)fieldPaint.get(fastScroller);
    // make the text half the normal fastscroller size 
    // to make room for a short date "MMM dd"
    paint.setTextSize( paint.getTextSize() / 2 );

    fieldPaint.set(fastScroller, paint);

} catch (Exception e){
    e.printStackTrace();
}

答案 1 :(得分:0)

检查FastScroller.java Android源文件,它是绘制叠加层的类。