自定义ListView FastScroller滑块图片中实现了快速滚动。在原有示例基础上增加了这样的功能:

ListView快速滚动示例增加首字母提示(转)ListView快速滚动示例增加首字母提示(转)

本文和上面示例借鉴了:

http://blog.csdn.net/sodino/archive/2010/12/15/6077017.aspx

做的比较简单。需要为ListView注册一个滚动监听器:  overlay就为要显示的框,后面有介绍。

listView.setOnScrollListener(new OnScrollListener() {

    boolean visible;

    @Override 
    public void onScrollStateChanged(AbsListView view, int scrollState) { 
        visible = true; 
        if (scrollState == ListView.OnScrollListener.SCROLL_STATE_IDLE) { 
            overlay.setVisibility(View.INVISIBLE); 
        } 
    }

    @Override 
    public void onScroll(AbsListView view, int firstVisibleItem, 
            int visibleItemCount, int totalItemCount) { 
        if (visible) { 
            overlay.setText(items[firstVisibleItem].substring(0, 1)); 
            overlay.setVisibility(View.VISIBLE); 
        } 
    } 
});

 

当然,还需要提示信息的布局文件:

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:andro/>

 

理论上,可以做出很花哨的提示界面。

在Activity的onCreate方法中加入这个提示界面:

this.overlay = (TextView) View.inflate(this, R.layout.overlay, null); 
getWindowManager() 
        .addView
                overlay, 
                new WindowManager.LayoutParams( 
                        LayoutParams.WRAP_CONTENT, 
                        LayoutParams.WRAP_CONTENT, 
                        WindowManager.LayoutParams.TYPE_APPLICATION, 
                        WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE 
                                | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE, 
                        PixelFormat.TRANSLUCENT));

 

这里要注意:

listView.setOnScrollListener(new OnScrollListener() {

    boolean visible;

监听器代码中增加了一个visible标志位。用于判断是否滚动状态变化过。否则,启动Activity后,无论提示界面是否invisible,都会显示,因为会调用onScroll方法。

代码测试通过,没有问题。by 喜糖

相关文章:

  • 2022-01-18
  • 2022-12-23
  • 2022-12-23
  • 2021-11-18
  • 2021-12-02
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-10-01
  • 2021-12-14
  • 2022-01-17
  • 2021-08-13
  • 2021-05-31
  • 2021-11-01
  • 2021-07-08
相关资源
相似解决方案