zoukankan      html  css  js  c++  java
  • ListView快速滚动示例增加首字母提示(转)

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

    imageimage

    本文和上面示例借鉴了:

    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:android="http://schemas.android.com/apk/res/android" 
        android:minWidth="80dp" android:maxWidth="80dp" android:gravity="center" 
        android:textSize="70sp" android:textColor="#ffffffff" 
        android:background="#99000088" android:padding="10dp" android:visibility="invisible"/>

     

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

    在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 喜糖

  • 相关阅读:
    Java实现 LeetCode 211 添加与搜索单词
    跨平台Unicode与UTF8互转代码
    C++转换unicode utf-8 gb2312编码
    c++ ANSI、UNICODE、UTF8互转
    Visual C++ unicode and utf8 转换
    Unicode和UTF-8的关系
    boost uuid 学习笔记
    boost uuid
    Darwin Streaming server 的 Task 类
    VS2010下编译安装DarwinStreamingServer5.5.5
  • 原文地址:https://www.cnblogs.com/xitang/p/2176102.html
Copyright © 2011-2022 走看看