Android 简单易用的SideBar 快速定位侧边栏A~Z 仿微信国家或地区代码选择

Android 简单易用的SideBar 快速定位侧边栏A~Z 仿微信国家或地区代码选择

前言

很多项目里都会用到快速定位侧边栏,好比如联系人列表界面、城市列表等;
所以为了方便,我就自己打包了一个控件依赖库,方便自己使用也方便别人使用;

效果

普通图片:
sidebar
GIF图:
sidebar

使用方法

Step 1. Add the JitPack repository to your build file

allprojects {
		repositories {
			...
			maven { url 'https://jitpack.io' }
		}
	}

Step 2. Add the dependency

dependencies {
	        implementation 'com.github.D10NGYANG:DL10SideBar:1.0.0'
	}

Step 3. 在布局中使用

<com.dlong.rep.dlsidebar.DLSideBar
        android:layout_width="40dp"
        android:layout_height="match_parent"
        android:layout_alignParentRight="true"
        app:dialogTextBackground="@drawable/ic_launcher_background"
        app:dialogTextBackgroundHeight="100dp"
        app:dialogTextBackgroundWidth="100dp"
        app:dialogTextColor="@color/colorAccent"
        app:dialogTextSize="25sp"
        app:sideBackground="@android:color/holo_orange_light"
        app:sideTextArray="@array/dl_side_bar_def_list"
        app:sideTextColor="@color/colorPrimaryDark"
        app:sideTextSelectColor="@color/colorAccent"
        app:sideTextSize="16sp" />

其中可以设置的参数包含以下:

<declare-styleable name="DLSideBar">
        <attr name="sideTextArray" format="reference" /> <!--sidebar的字符列表-->
        <attr name="sideTextColor" format="color" /> <!--sidebar的字符颜色-->
        <attr name="sideTextSelectColor" format="color" /> <!--sidebar的字符选中时的颜色-->
        <attr name="sideTextSize" format="dimension" /> <!--sidebar的字符大小-->
        <attr name="sideBackground" format="reference|color" /> <!--sidebar的背景颜色-->
        <attr name="dialogTextColor" format="color" /> <!--选中弹窗字符颜色-->
        <attr name="dialogTextSize" format="dimension" /> <!--选中弹窗字符大小-->
        <attr name="dialogTextBackground" format="reference|color" /> <!--选中弹窗字符背景颜色-->
        <attr name="dialogTextBackgroundWidth" format="dimension" /> <!--选中弹窗字符背景宽度-->
        <attr name="dialogTextBackgroundHeight" format="dimension" /> <!--选中弹窗字符背景高度-->
    </declare-styleable>

Step 4. 在Activity中监听

private DLSideBar sbIndex;
sbIndex = findViewById(R.id.sb_index);
// 配置右侧index
sbIndex.setOnTouchingLetterChangedListener(mSBTouchListener);
/** * 右侧index选项监听 */
    private DLSideBar.OnTouchingLetterChangedListener mSBTouchListener = new DLSideBar.OnTouchingLetterChangedListener() {
        @Override
        public void onTouchingLetterChanged(String str) {
            // 返回的是字母A~Z
            // TODO: 2019/4/1 这里更新你的列表
        }
    };

完事。

demo

整个项目的源码在GitHub上,欢迎查看和提交意见
D10NGYANG/DL10SideBar