WavaSideBar——一个自带中英文对应排序和检索功能的字母导航栏
##效果图
1、支持手势滑动导航栏
2、支持自定义设置偏移量和颜色
3、支持设置字母导航栏设置位置
4、支持自动匹配中英文
5、支持拼音和中文搜索
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
compile 'com.github.nanchen2251:WaveSideBar:1.0.6'
}
<!--搜索框-->
<com.nanchen.wavesidebar.SearchEditText
android:id="@+id/main_search"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_marginTop="5dp"
android:background="@drawable/search_edit_bg"
android:drawableLeft="@mipmap/icon_search"
android:drawablePadding="5dp"
android:drawableStart="@mipmap/icon_search"
android:gravity="center_vertical"
android:hint="@string/search"
android:imeOptions="actionSearch"
android:maxLines="1"
android:padding="5dp"
android:textSize="16sp"
app:drawableDel="@mipmap/edit_delete"/>
<!--字母导航栏-->
<com.nanchen.wavesidebar.WaveSideBarView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="8dp"
android:id="@+id/main_side_bar"
app:sidebar_text_color="@color/colorAccent"
app:sidebar_lazy_respond="false"/>
mWaveSideBarView = (WaveSideBarView) findViewById(R.id.main_side_bar);
mWaveSideBarView.setOnSelectIndexItemListener(new OnSelectIndexItemListener() {
@Override
public void onSelectIndexItem(String letter) {
for (int i=0; i<mContactModels.size(); i++) {
if (mContactModels.get(i).getIndex().equals(letter)) {
((LinearLayoutManager) mRecyclerView.getLayoutManager()).scrollToPositionWithOffset(i, 0);
return;
}
}
}
});
// 搜索按钮相关
mSearchEditText = (SearchEditText) findViewById(R.id.main_search);
mSearchEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
//You can do something in there
mShowModels.clear();
for (ContactModel model : mContactModels) {
String str = Trans2PinYinUtil.trans2PinYin(model.getName());
if (str.contains(s.toString())|| model.getName().contains(s.toString())) {
mShowModels.add(model);
}
}
mAdapter.notifyDataSetChanged();
}
});
FirstLetterUtil.getFirstLetter(name);
Trans2PinYinUtil.trans2PinYin(String name);
具体请下载查看示例代码
Attributes | Format | Default | Description |
---|---|---|---|
sidebar_text_color | color | Color.GRAY | Text color. |
sidebar_max_offset | dimension | 80dp | Offset of the selected item. |
sidebar_position | enum {right, left} | right | Be placed on left or right in the view. |
sidebar_text_alignment | enum {center, left, right} | center | Alignment of items. |
sidebar_lazy_respond | boolean | false | If true, the listener will not be called until the finger up. If false, the listener will be called when the finger down, move and up. |
该项目参考了: