Ich verwende diese ItemDecoration Klasse für Gridlayout ->https://github.com/devunwired/recyclerview-playground/blob/master/app/src/main/java/com/example/android/recyclerplayground/GridDividerDecoration.javaWie wird die erste Zeile in RecyclerView Item Decoration für GridLayout übersprungen?
Aber das Problem ist, meine erste Zeile in Gridlayout ist ein Bild und ich die Spanne bis 2.
Sie können die LCD-Display als pro ansehen Abbildung unten:
Wie die erste Zeile zu überspringen, so dass ItemDecoration nicht auf dem Bild gezogen hat?
Unten ist der Code, dass ich die ItemDecoration hinzufügen bin mit: -
mRecyclerView.setHasFixedSize(true);
mLayoutManager = new GridLayoutManager(getActivity(), 2);
mLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
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()));
Ich arbeite auch die drawHorizontal Methode in GridDividerDecoration Klasse modifiziert nur zu ziehen, wenn Imageview null ist, aber immer noch nicht: -
public void drawHorizontal(Canvas c, RecyclerView parent) {
final int top = parent.getPaddingTop();
final int bottom = parent.getHeight() - parent.getPaddingBottom();
final int childCount = parent.getChildCount();
for (int i = 0; i < childCount; i++) {
final View child = parent.getChildAt(i);
if (child.findViewById(R.id.home_imgHeader) == null) {
final RecyclerView.LayoutParams params =
(RecyclerView.LayoutParams) child.getLayoutParams();
final int left = child.getRight() + params.rightMargin + mInsets;
final int right = left + mDivider.getIntrinsicWidth();
mDivider.setBounds(left, top, right, bottom);
mDivider.draw(c);
}
}
}
Irgendwelche Hilfe?
ein Grund für down-Stimmen ?? – skycrew