Giter Site home page Giter Site logo

mcxtzhang / suspensionindexbar Goto Github PK

View Code? Open in Web Editor NEW
1.9K 1.9K 332.0 10.8 MB

仿美团选择城市、微信通讯录、饿了么点餐列表的导航悬停分组索引列表。

Home Page: http://blog.csdn.net/zxt0601/article/details/52355199

Java 100.00%

suspensionindexbar's People

Contributors

mcxtzhang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

suspensionindexbar's Issues

关于绘制title文字的坐标问题

/**
* 绘制Title区域背景和文字的方法
*
* @param c
* @param left
* @param right
* @param child
* @param params
* @param position
/
private void drawTitleArea(Canvas c, int left, int right, View child, RecyclerView.LayoutParams params, int position) {//最先调用,绘制在最下层
mPaint.setColor(COLOR_TITLE_BG);
//这里是top的坐标是往上走的,因此这里是在child的top基础上减去mTitleHeight
c.drawRect(left, child.getTop() - params.topMargin - mTitleHeight, right, child.getTop() - params.topMargin, mPaint);
mPaint.setColor(COLOR_TITLE_FONT);
/

Paint.FontMetricsInt fontMetrics = mPaint.getFontMetricsInt();
int baseline = (getMeasuredHeight() - fontMetrics.bottom + fontMetrics.top) / 2 - fontMetrics.top;*/

    mPaint.getTextBounds(mDatas.get(position).getSuspensionTag(), 0, mDatas.get(position).getSuspensionTag().length(), mBounds);
    //算左下角的坐标?
    c.drawText(mDatas.get(position).getSuspensionTag(), child.getPaddingLeft(), child.getTop() - params.topMargin - (mTitleHeight / 2 - mBounds.height() / 2), mPaint);

// c.drawText(mDatas.get(position).getSuspensionTag(), child.getPaddingLeft(), child.getTop() - params.topMargin - (mTitleHeight / 2 - mBounds.height() / 2), mPaint);
// c.drawText(mDatas.get(position).getSuspensionTag(), child.getPaddingLeft(), child.getTop() - params.topMargin, mPaint);
}

你这里算文字的坐标的时候,是左下角的?

IndexBar的问题

设置IndexBar的高度为wrap_content的时候,就不显示了。

多音字

能识别常州市,不能识别长沙市,长春市,还有其他个别的也是这样!大神 ,应该怎么改呀,谢谢~

DividerItemDecoration设计多余

其实,不用区分屏幕的横竖,都能正确的绘制分割线,反而区分后横屏的时候绘制的是垂直于屏幕最长边的分割线;而且,方向不应该使用LinearLayoutManager.HORIZONTAL这种方式指定,应该根据系统屏幕方向设置,更灵活

mHeaderAdapter不支持分别设置title和里面item的paddingLeft

MeituanSelectCityActivity的mHeaderAdapter

<@linearlayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="15dp">

<android.support.v7.widget.RecyclerView
    android:id="@+id/rvCity"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingRight="15dp"
    android:paddingTop="5dp"/>

<@/LinearLayout>

现有的title的paddingLeft是在根布局LinearLayout里面设置的,
如上LinearLayout的paddingLeft会应用于title,也会影响RecyclerView item。请教如何分别设置?

indexBar不能自定义字体颜色

目前字体颜色是纯黑的,可以增加一个设置字体颜色的方法吗?我就偷个懒,不把整个工程弄下来做依赖了~

混淆问题

您好,,请问该项目怎么样混淆呀

挤压问题

为什么不留个邮箱什么的联系方式呢,键盘弹出会直接被挤压,有注意到吗?

使用出错

Process: tts.project.orange.meike, PID: 23132
java.lang.ArithmeticException: divide by zero
at tts.project.slidelib.IndexBar.widget.IndexBar.onSizeChanged(IndexBar.java:232)
求解

又发现一个bug

当还有数据很多的情况,用户来突然按返回结束这个页面会崩溃

去掉悬停

怎么去掉悬停呀,把TitleItemDecoration的onDrawOver方法删掉以后,每次title滑动到顶部时,会变成白色,把头部标题遮盖掉?

有个崩溃看看能不能解决一下

01-04 12:13:01.062 19960 19960 E CrashManager: force stop
01-04 12:13:01.063 19960 19960 E AndroidRuntime: FATAL EXCEPTION: main
01-04 12:13:01.063 19960 19960 E AndroidRuntime: Process: com.sina.weibolite, PID: 19960
01-04 12:13:01.063 19960 19960 E AndroidRuntime: java.lang.IllegalArgumentException: Comparison method violates its general contract!
01-04 12:13:01.063 19960 19960 E AndroidRuntime: at java.util.TimSort.mergeLo(TimSort.java:761)
01-04 12:13:01.063 19960 19960 E AndroidRuntime: at java.util.TimSort.mergeAt(TimSort.java:497)
01-04 12:13:01.063 19960 19960 E AndroidRuntime: at java.util.TimSort.mergeCollapse(TimSort.java:421)
01-04 12:13:01.063 19960 19960 E AndroidRuntime: at java.util.TimSort.sort(TimSort.java:210)
01-04 12:13:01.063 19960 19960 E AndroidRuntime: at java.util.Arrays.sort(Arrays.java:1998)
01-04 12:13:01.063 19960 19960 E AndroidRuntime: at java.util.Collections.sort(Collections.java:1900)
01-04 12:13:01.063 19960 19960 E AndroidRuntime: at com.mcxtzhang.indexlib.IndexBar.b.b.c(IndexBarDataHelperImpl.java:92)
01-04 12:13:01.063 19960 19960 E AndroidRuntime: at com.mcxtzhang.indexlib.IndexBar.widget.IndexBar.b(IndexBar.java:360)
01-04 12:13:01.063 19960 19960 E AndroidRuntime: at com.mcxtzhang.indexlib.IndexBar.widget.IndexBar.a(IndexBar.java:343)

建议

我一直在用的库:https://github.com/truizlop/SectionedRecyclerView
因为也一直没用到悬停的功能和需求,但想想,今天看到这个库很是喜欢,但又不舍原来的库,如果能直接把头部定制,尾部定制,悬停,搜索及IndexBar全集成一个那不完美了,当然我也是一个喜欢在Git上找库不愿花时间去自己造轮子的人,发个美好愿景,最后再次感谢作者的奉献精神,你的滑动删除库太好用我无法用语言来诉说。

关于刷新的问题

每次点击更新数据源之后顶部那4个都会发生顺序的变化,没找到问题在哪
还有比如把A下面的数据全部删掉后右侧的索引没有删掉
这两个问题解决了,要是再加个侧滑出来删除按钮的话那就完美了

滑动卡顿

美团那个有个问题,如果热门城市很多的话,从热门这个item往下或者从下往上滑动到都会卡顿一下

悬停加拼音加索引的没有问题,但业务上有时只需要标题,于是做了个简化Demo,但悬停出现问题:

简化Demo即只需要Header(且Header的文字并不是由拼音来排序的),其它都没要。
由于我的是跨平台,所以语法为C#,Model为原始定义:
1
本库展现要用的数据Model:
2
跨平台数据模拟生成:
3
本库展现的数据转换:
4
初始化页面和数据:
5
效果展现:
6
问题如下:在向上滑动到如下位置是第一个Header不见了,然后再下滑又会出来,同样的下面所有的Header都是这样的情况:
7
再附上Gif效果图:
8

另外一个需求,文字的左间距能否开放出来设置啊。

title的内容样式不单一,怎么解决

RT,我项目中要实现类似微信联系人那种有悬浮头列表的功能,但是悬浮头的标题内容不是单一的拼音字母,涉及到不同颜色的字体,还有一些动态的数据。再此请教博主,有什么好的实现方法么

java.lang.IllegalArgumentException: Comparison method violates its general contract!

错误信息:
java.lang.IllegalArgumentException: Comparison method violates its general contract!
at java.util.TimSort.mergeLo(TimSort.java:743)
at java.util.TimSort.mergeAt(TimSort.java:479)
at java.util.TimSort.mergeCollapse(TimSort.java:406)
at java.util.TimSort.sort(TimSort.java:210)
at java.util.TimSort.sort(TimSort.java:169)
at java.util.Arrays.sort(Arrays.java:2010)
at java.util.Collections.sort(Collections.java:1883)

报错位置:
IndexBarDataHelperImpl.java 93行
Collections.sort(datas, new Comparator() {
@OverRide
public int compare(BaseIndexPinyinBean lhs, BaseIndexPinyinBean rhs) {
if (!lhs.isNeedToPinyin()) {
return 0;
} else if (!rhs.isNeedToPinyin()) {
return 0;
} else if (lhs.getBaseIndexTag().equals("#")) {
return 1;
} else if (rhs.getBaseIndexTag().equals("#")) {
return -1;
} else {
return lhs.getBaseIndexPinyin().compareTo(rhs.getBaseIndexPinyin());
}
}
});

这是我获取手机通讯录,之后调用 mIndexBar.getDataHelper().sortSourceDatas(); 的时候报的错误

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.