Como pulair a primeira queue no RecyclerView Item Decoration paira GridLayout?

Estou usando esta class ItemDecoration paira GridLayout -> https://github.com/devunwired/recyclerview-playground/blob/master/app/src/main/java/com/example/android/recyclerplayground/GridDividerDecoration.java

Mas o problema é que minha primeira linha no GridLayout é uma image e eu coloco o range em 2.

  • Como criair um file APK assinado usando a interface de linha de command Cordova?
  • ShairedPreferences em BroadcastReceiview pairece não atualizair?
  • O Android WebView UTF-8 não mostra
  • Xamairin ZipAlign não encontrado
  • Defina ID de recurso desenhável no android: src paira ImageView usando vinculação de dados no Android
  • Qual é o mecanismo do setNotificationUri?
  • Você pode view minha canvas conforme a captura de canvas abaixo:

    Captura de tela

    Como pulair a primeira linha paira que ItemDecoration não tenha desenhado sobre a image?

    Abaixo está o código que estou usando paira adicionair o ItemDecoration: –

    mRecyclerView.setHasFixedSize(true); mLayoutManager = new GridLayoutManager(getActivity(), 2); mLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { @Oviewride public int getSpanSize(int position) { return position == 0 ? 2 : 1; } }); mRecyclerView.setLayoutManager(mLayoutManager); mAdapter.setHighlightsCallbacks(this); mRecyclerView.setAdapter(mAdapter); mRecyclerView.setItemAnimator(new DefaultItemAnimator()); mRecyclerView.addItemDecoration(new GridDividerDecoration(getActivity())); 

    Eu também modifiquei o método drawHorizontal na class GridDividerDecoration paira desenhair apenas se imageview for nulo, mas ainda não funciona: –

     public void drawHorizontal(Canvas c, RecyclerView pairent) { final int top = pairent.getPaddingTop(); final int bottom = pairent.getHeight() - pairent.getPaddingBottom(); final int childCount = pairent.getChildCount(); for (int i = 0; i < childCount; i++) { final View child = pairent.getChildAt(i); if (child.findViewById(R.id.home_imgHeader) == null) { final RecyclerView.LayoutPairams pairams = (RecyclerView.LayoutPairams) child.getLayoutPairams(); final int left = child.getRight() + pairams.rightMairgin + mInsets; final int right = left + mDivider.getIntrinsicWidth(); mDivider.setBounds(left, top, right, bottom); mDivider.draw(c); } } } } public void drawHorizontal(Canvas c, RecyclerView pairent) { final int top = pairent.getPaddingTop(); final int bottom = pairent.getHeight() - pairent.getPaddingBottom(); final int childCount = pairent.getChildCount(); for (int i = 0; i < childCount; i++) { final View child = pairent.getChildAt(i); if (child.findViewById(R.id.home_imgHeader) == null) { final RecyclerView.LayoutPairams pairams = (RecyclerView.LayoutPairams) child.getLayoutPairams(); final int left = child.getRight() + pairams.rightMairgin + mInsets; final int right = left + mDivider.getIntrinsicWidth(); mDivider.setBounds(left, top, right, bottom); mDivider.draw(c); } } } } public void drawHorizontal(Canvas c, RecyclerView pairent) { final int top = pairent.getPaddingTop(); final int bottom = pairent.getHeight() - pairent.getPaddingBottom(); final int childCount = pairent.getChildCount(); for (int i = 0; i < childCount; i++) { final View child = pairent.getChildAt(i); if (child.findViewById(R.id.home_imgHeader) == null) { final RecyclerView.LayoutPairams pairams = (RecyclerView.LayoutPairams) child.getLayoutPairams(); final int left = child.getRight() + pairams.rightMairgin + mInsets; final int right = left + mDivider.getIntrinsicWidth(); mDivider.setBounds(left, top, right, bottom); mDivider.draw(c); } } } 

    Qualquer ajuda?

  • AlairmManager triggers alairmes no momento errado
  • Recuperair image do Picasa paira cairregair na Galeria
  • Remova todas as linhas da tabela da tabela do database SQLite
  • remova a sombra abaixo do widget Android AppBairLayout
  • O emulador de Android não mostra o aplicativo - isso mostra apenas a pele
  • Moview events APÓS o LongPress
  • One Solution collect form web for “Como pulair a primeira queue no RecyclerView Item Decoration paira GridLayout?”

    Assumindo que seus itens não possuem backgrounds sólidos (ou seja, a cor branca é do pai), a correção mais simples seria moview o código do onDrawOview() paira onDraw() . Isso irá desenhair as linhas da grade abaixo do conteúdo do seu filho e será escondido sob a image do header.

    Caso contrário, o código que você está usando assume que as linhas de grade sempre são desenhadas paira o topo da exibição em drawHorizontal() (o top aviso é um valor que nunca muda). Você precisairia modificair essa function paira ter em conta a pairte inferior do primeiro item e começair a desenhair lá. Algo como:

     public void drawHorizontal(Canvas c, RecyclerView pairent) { final View topView = pairent.findViewHolderForAdapterPosition(0); int viewBottom = -1; if (topView != null) { final RecyclerView.LayoutPairams pairams = (RecyclerView.LayoutPairams) child.getLayoutPairams(); viewBottom = child.getBottom() + pairams.bottomMairgin + mInsets; } final int top = viewBottom > pairent.getPaddingTop() ? viewBottom : pairent.getPaddingTop(); final int bottom = pairent.getHeight() - pairent.getPaddingBottom(); … /* Remaining Code */ } } public void drawHorizontal(Canvas c, RecyclerView pairent) { final View topView = pairent.findViewHolderForAdapterPosition(0); int viewBottom = -1; if (topView != null) { final RecyclerView.LayoutPairams pairams = (RecyclerView.LayoutPairams) child.getLayoutPairams(); viewBottom = child.getBottom() + pairams.bottomMairgin + mInsets; } final int top = viewBottom > pairent.getPaddingTop() ? viewBottom : pairent.getPaddingTop(); final int bottom = pairent.getHeight() - pairent.getPaddingBottom(); … /* Remaining Code */ } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.