Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

有\n的时候崩溃 #3

Open
lizhw123 opened this issue Sep 28, 2016 · 13 comments
Open

有\n的时候崩溃 #3

lizhw123 opened this issue Sep 28, 2016 · 13 comments

Comments

@lizhw123
Copy link

No description provided.

@Carbs0126
Copy link
Owner

感谢反馈,我尽快看一下这个问题

@lizhw123
Copy link
Author

java.lang.StringIndexOutOfBoundsException: length=96; regionStart=14; regionLength=-3
at java.lang.String.startEndAndLength(String.java:298)
at java.lang.String.substring(String.java:1087)
at java.lang.String.subSequence(String.java:1424)
at ExpandableTextView.getNewTextByConfig(ExpandableTextView.java:266)
at setText(ExpandableTextView.java:356)
at android.widget.TextView.setText(TextView.java:4189)

@Carbs0126
Copy link
Owner

我试了下,添加\n后,我这边没有产生问题;
另外,我在编码时没有考虑到\n的情况,因此对\n支持的不好,比如存在换行符后对一共多少行判断有误。在listview中使用此控件时,在初始化时会显示“先打开然后立即收起”的现象,这两个问题有待进一步解决。
另外,您给的log中显示266行报错,但是266行是空行,因此应该是您在修改源码后进行调试的log,所以我这边无法复现此问题

@lizhw123
Copy link
Author

我没有改代码,只是拿来测试时发现的。
是这两行代码

            int remainWidth = getValidLayout().getWidth() -
                    (int) (mTextPaint.measureText(mOrigText.subSequence(indexStart, indexEndTrimmed).toString()) + 0.5);
            float widthTailReplaced = mTextPaint.measureText(getContentOfString(mEllipsisHint)
                    + (mShowToExpandHint ? (getContentOfString(mToExpandHint) + getContentOfString(mGapToExpandHint)) : ""));

@lizhw123
Copy link
Author

就是碰到有
aaa
bbb
ccc

这种内容时候会报错

@Carbs0126
Copy link
Owner

谢谢提醒,确实有这个问题,主要是因为我没有处理\n导致的,我稍后改改

@lizhw123
Copy link
Author

我想在项目中使用,但还有一个问题,能在加一个ClickableSpan 把点击显示文字和"展开"/"收起"这两个的点击事件区分开吗?

@Carbs0126
Copy link
Owner

没太明白你的意思,你的意思是“展开”/“收起”只是一个显示作用,不添加按下功能,按下功能在另一个clickspan中添加?

@lizhw123
Copy link
Author

我的意思是“展开”/“收起”就按现在做的,但点击显示的文字可以加一个ClickableSpan,这样就可以自己来设点击事件了。就是点击显示文字和"展开"/"收起"可以有不同的响应

@Carbs0126
Copy link
Owner

我明白你的意思了,现在的clickablespan的click是这样定义的:

@Override
        public void onClick(View widget) {
            if(hasOnClickListeners()
                    && (getOnClickListener(ExpandableTextView.this) instanceof ExpandableClickListener)) {
            }else{
                toggle();
            }
        }

现在的问题是,如果我给这个view设置了外部的点击事件,此时单独点击“展开收起”时,既响应clickablespan,同时响应外部点击效果

@lizhw123
Copy link
Author

对的

@haogg
Copy link

haogg commented Feb 10, 2017

这个在android 4.4 上是能够复现的

@Carbs0126
Copy link
Owner

更新了一下代码,现在换行崩溃的问题已经可以解决了
请更细一下依赖:
compile 'cn.carbs.android:ExpandableTextView:1.0.3'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants