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

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

imageimage

本文和上面示例借鉴了:

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

做的比较简单。需要为ListView注册一个滚动监听器:

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方法。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值