2015-09-16 13 views
2

我有此异常而呈现分频器项目的recyclerview仅适用于Android 4.4,其工作finein的是Android 5.0Android的回收视图divideritem 4.4兼容性

java.lang.NullPointerException 
     at android.view.GLES20Canvas.setupModifiers(GLES20Canvas.java:1439) 
     at android.view.GLES20Canvas.drawLines(GLES20Canvas.java:1019) 
     at android.view.GLES20Canvas.drawLine(GLES20Canvas.java:1009) 
     at android.graphics.drawable.GradientDrawable.draw(GradientDrawable.java:538) 
     at com.sistac.informecampos.fragments.DividerItemDecoration.onDrawOver(DividerItemDecoration.java:35) 
     at android.support.v7.widget.RecyclerView.draw(RecyclerView.java:2444) 
     at android.view.View.getDisplayList(View.java:13362) 
     at android.view.View.getDisplayList(View.java:13404) 
     at android.view.View.draw(View.java:14182) 
     at android.view.ViewGroup.drawChild(ViewGroup.java:3103) 
     at android.support.design.widget.CoordinatorLayout.drawChild(CoordinatorLayout.java:1040) 
     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940) 
     at android.view.View.getDisplayList(View.java:13357) 
     at android.view.View.getDisplayList(View.java:13404) 
     at android.view.View.draw(View.java:14182) 
     at android.view.ViewGroup.drawChild(ViewGroup.java:3103) 
     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940) 
     at android.view.View.getDisplayList(View.java:13357) 
     at android.view.View.getDisplayList(View.java:13404) 
     at android.view.View.draw(View.java:14182) 
     at android.view.ViewGroup.drawChild(ViewGroup.java:3103) 
     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940) 
     at android.view.View.getDisplayList(View.java:13357) 
     at android.view.View.getDisplayList(View.java:13404) 
     at android.view.View.draw(View.java:14182) 
     at android.view.ViewGroup.drawChild(ViewGroup.java:3103) 
     at android.support.v4.widget.DrawerLayout.drawChild(DrawerLayout.java:1229) 
     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940) 
     at android.view.View.getDisplayList(View.java:13357) 
     at android.view.View.getDisplayList(View.java:13404) 
     at android.view.View.draw(View.java:14182) 
     at android.view.ViewGroup.drawChild(ViewGroup.java:3103) 
     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940) 
     at android.view.View.draw(View.java:14468) 
     at android.widget.FrameLayout.draw(FrameLayout.java:472) 
     at android.view.View.getDisplayList(View.java:13362) 
     at android.view.View.getDisplayList(View.java:13404) 
     at android.view.View.draw(View.java:14182) 
     at android.view.ViewGroup.drawChild(ViewGroup.java:3103) 
     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940) 
     at android.view.View.getDisplayList(View.java:13357) 
     at android.view.View.getDisplayList(View.java:13404) 
     at android.view.View.draw(View.java:14182) 
     at android.view.ViewGroup.drawChild(ViewGroup.java:3103) 
     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940) 
     at android.view.View.getDisplayList(View.java:13357) 
     at android.view.View.getDisplayList(View.java:13404) 
     at android.view.View.draw(View.java:14182) 
     at android.view.ViewGroup.drawChild(ViewGroup.java:3103) 
     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940) 
     at android.view.View.draw(View.java:14468) 
     at android.view.View.getDisplayList(View.java:13362) 
     at android.view.View.getDisplayList(View.java:13404) 
     at android.view.View.draw(View.java:14182) 
     at android.view.ViewGroup.drawChild(ViewGroup.java:3103) 
     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940) 
     at android.view.View.draw(View.java:14468) 
     at android.widget.FrameLayout.draw(FrameLayout.java:472) 
     at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2326) 
     at android.view.View.getDisplayList(View.java:13362) 
     at android.view.View.getDisplayList(View.java:13404) 
     at android.view.HardwareRenderer$GlRenderer.buildDisplayList(HardwareRenderer.java:1570) 
     at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:1449) 
     at android.view.ViewRootImpl.draw(ViewRootImpl.java:2377) 
     at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2249) 
     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1879) 
     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:996) 
     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java: 

我DividerItem实现覆盖

@Override 
public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) { 
    int left = parent.getPaddingLeft(); 
    int right = parent.getWidth() - parent.getPaddingRight(); 

    int childCount = parent.getChildCount(); 
    for (int i = 0; i < childCount; i++) { 
     View child = parent.getChildAt(i); 

     RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams(); 

     int top = child.getBottom() + params.bottomMargin; 
     int bottom = top + mDivider.getIntrinsicHeight(); 

     mDivider.setBounds(left, top, right, bottom); 
     mDivider.draw(c); 
    } 

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/main_content" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<android.support.v7.widget.RecyclerView 
    android:id="@+id/grid" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

<include layout="@layout/new_fab" /> 

其非常简单。有没有建议的步骤来识别和修复这类错误?

感谢, 豪尔赫

+0

这篇文章帮我解决这个问题http://stackoverflow.com/questions/23637267/created-l-shaped-background – jorgebo10

回答

9

这有助于我:改变分频器XML从

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shape="line"> 
    <solid android:color="#00000000"/> 
    <size android:height="1dp"/> 
</shape> 

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shape="line"> 
    <stroke android:color="#00000000"/> 
    <size android:height="1dp"/> 
</shape> 

改变固体中风

+2

这两个代码片段看起来都和我一样。 – uwolfer

+0

更改为中风 –

+0

我从来不会想到我自己。 – tir38

0

显然,该形状的一些必要属性丢失了。 在我自己的情况下,我不得不添加行程属性,该属性缺失:

<stroke 
    android:width="1dp" 
    android:color="@color/transparent" 
    />