用recycleView封装成可扩展列表 点击父布局时报数组越界错误

来源:互联网 发布:nba球员各项数据总排名 编辑:程序博客网 时间:2024/06/06 04:24

错误:

java.lang.ArrayIndexOutOfBoundsException: length=61; index=-1

at android.text.StaticLayout.calculateEllipsis(StaticLayout.java:805)

at android.text.StaticLayout.out(StaticLayout.java:724)
at android.text.StaticLayout.generate(StaticLayout.java:432)
at android.text.StaticLayout.<init>(StaticLayout.java:144)
at android.widget.TextView.makeSingleLayout(TextView.java:5973)
at android.widget.TextView.makeNewLayout(TextView.java:5830)
at android.widget.TextView.onMeasure(TextView.java:6187)
at android.view.View.measure(View.java:15367)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4924)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1420)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:697)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:578)
at android.view.View.measure(View.java:15367)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:622)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:404)
at android.view.View.measure(View.java:15367)
at android.support.v7.widget.RecyclerView$LayoutManager.measureChildWithMargins(RecyclerView.java:7487)
at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1416)
at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1353)
at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:574)
at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3028)
at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:2625)
at android.view.View.measure(View.java:15367)
at android.widget.RelativeLayout.measureChild(RelativeLayout.java:607)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:420)
at android.view.View.measure(View.java:15367)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:622)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:404)
at android.view.View.measure(View.java:15367)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1560)
at android.view.View.measure(View.java:15367)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:622)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:404)
at android.view.View.measure(View.java:15367)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:622)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:404)
at android.view.View.measure(View.java:15367)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4924)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:314)
at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135)
at android.view.View.measure(View.java:15367)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4924)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1420)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:697)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:578)
at android.view.View.measure(View.java:15367)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4924)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:314)
at android.view.View.measure(View.java:15367)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4924)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1420)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:697)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:578)
at android.view.View.measure(View.java:15367)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4924)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:314)
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2154)
at android.view.View.measure(View.java:15367)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1863)

正如所看到的样子,没有提示到我写的代码的具体哪一行,只知道是View测量的时候报错,并且报的是数组越界错误一时间很难找到出错的地方在哪。于是我开始了百度之旅,翻了我几个小时的百度,终于在stackoverflow找到了答案!

附上原文链接:

http://stackoverflow.com/questions/17047172/android-java-lang-arrayindexoutofboundsexception-length-10-index-10


看到这个的时候一头黑人懵逼脸,这不是设置textView是否为单行的属性么?并且android:singleLine="true"这个属性已经被谷歌废弃了(说不上来是哪个版本,现在使用AS 2.2.3 在xml里就会出现废弃横杠)再往下看:


看到这个我才恍然大悟,16以上的版本使用android:maxLines="1"这个属性就直接给他加上android:singleLine="true"这个,也就是说android16之前的手机不能只设置android:maxLines="1",必须设置android:singleLine="true"才能达到只显示一行的效果,这真是深坑啊!


0 0
原创粉丝点击