【自定义控件】一、字母索引控件,仿小米联系人字母列表

LetterIndexWiget

1、介绍

字母索引控件,仿小米联系人字母列表,控件代码超级简单,很适合学习,为二次开发提供思路,如果对大家有帮助,github 上给个start哦。
代码地址
效果图

2、使用方法

使用源码引入的方式,方便修改,将letterlib 引入到项目中,通过 xml 属性的方式设置控件

        <com.lj.wiget.letterlib.LetterIndexView
            android:id="@+id/letter_id"
            android:layout_width="wrap_content"
            android:paddingHorizontal="5dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_marginStart="10dp"
            android:background="@drawable/letter_layout_bg"
            android:paddingVertical="20dp"
            app:letterPadding="2dp"
            app:letterSelectedBgColor="@color/purple_200"
            app:letterSelectedColor="@color/black"
            app:letterSpaceBetween="20dp"
            app:textSize="20dp"
            app:unSelectedLetterColor="@color/white" />

也可以使用 java 原生代码进行设置,上面的属性,都有对应的相应的方法设置。

如何监听,选中状态呢?

        // 设置监听
        mLetterId.setOnLetterSelectedListener(new LetterIndexView.OnLetterSelectedListener() {
            @Override
            public void onLetterSelectedChange(String oldLetter, String newLetter, int index, double centerY) {
                mTvMsg.setText(oldLetter + "  " + newLetter + " " + index);
                mTvLetterTip.setVisibility(View.VISIBLE);
                mTvLetterTip.setText(newLetter);
                float tipPosition = (float) (mLetterId.getTop() + centerY - mTvLetterTip.getHeight() / 2);
                mTvLetterTip.setTranslationY(tipPosition);
            }

            @Override
            public void onLetterUp() {
                mTvLetterTip.setVisibility(View.GONE);
            }
        });
        // 设置数据源
        mLetterId.setLetterDataAndRefresh(Arrays.asList("A", "上", "天", "揽", "明", "月", "下", "海", "捉", "老", "憋"));

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值