Browse Source
android: Remove DividerItemDecoration
android: Remove DividerItemDecoration
Removed in favor of material components versionnce_cpp
committed by
bunnei
1 changed files with 0 additions and 130 deletions
@ -1,130 +0,0 @@ |
|||
package org.yuzu.yuzu_emu.ui; |
|||
|
|||
import android.content.Context; |
|||
import android.content.res.TypedArray; |
|||
import android.graphics.Canvas; |
|||
import android.graphics.Rect; |
|||
import android.graphics.drawable.Drawable; |
|||
import android.util.AttributeSet; |
|||
import android.view.View; |
|||
|
|||
import androidx.annotation.NonNull; |
|||
import androidx.recyclerview.widget.LinearLayoutManager; |
|||
import androidx.recyclerview.widget.RecyclerView; |
|||
|
|||
/** |
|||
* Implementation from: |
|||
* https://gist.github.com/lapastillaroja/858caf1a82791b6c1a36 |
|||
*/ |
|||
public class DividerItemDecoration extends RecyclerView.ItemDecoration { |
|||
|
|||
private Drawable mDivider; |
|||
private boolean mShowFirstDivider = false; |
|||
private boolean mShowLastDivider = false; |
|||
|
|||
public DividerItemDecoration(Context context, AttributeSet attrs) { |
|||
final TypedArray a = context |
|||
.obtainStyledAttributes(attrs, new int[]{android.R.attr.listDivider}); |
|||
mDivider = a.getDrawable(0); |
|||
a.recycle(); |
|||
} |
|||
|
|||
public DividerItemDecoration(Context context, AttributeSet attrs, boolean showFirstDivider, |
|||
boolean showLastDivider) { |
|||
this(context, attrs); |
|||
mShowFirstDivider = showFirstDivider; |
|||
mShowLastDivider = showLastDivider; |
|||
} |
|||
|
|||
public DividerItemDecoration(Drawable divider) { |
|||
mDivider = divider; |
|||
} |
|||
|
|||
public DividerItemDecoration(Drawable divider, boolean showFirstDivider, |
|||
boolean showLastDivider) { |
|||
this(divider); |
|||
mShowFirstDivider = showFirstDivider; |
|||
mShowLastDivider = showLastDivider; |
|||
} |
|||
|
|||
@Override |
|||
public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, |
|||
@NonNull RecyclerView.State state) { |
|||
super.getItemOffsets(outRect, view, parent, state); |
|||
if (mDivider == null) { |
|||
return; |
|||
} |
|||
if (parent.getChildAdapterPosition(view) < 1) { |
|||
return; |
|||
} |
|||
|
|||
if (getOrientation(parent) == LinearLayoutManager.VERTICAL) { |
|||
outRect.top = mDivider.getIntrinsicHeight(); |
|||
} else { |
|||
outRect.left = mDivider.getIntrinsicWidth(); |
|||
} |
|||
} |
|||
|
|||
@Override |
|||
public void onDrawOver(@NonNull Canvas c, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { |
|||
if (mDivider == null) { |
|||
super.onDrawOver(c, parent, state); |
|||
return; |
|||
} |
|||
|
|||
// Initialization needed to avoid compiler warning |
|||
int left = 0, right = 0, top = 0, bottom = 0, size; |
|||
int orientation = getOrientation(parent); |
|||
int childCount = parent.getChildCount(); |
|||
|
|||
if (orientation == LinearLayoutManager.VERTICAL) { |
|||
size = mDivider.getIntrinsicHeight(); |
|||
left = parent.getPaddingLeft(); |
|||
right = parent.getWidth() - parent.getPaddingRight(); |
|||
} else { //horizontal |
|||
size = mDivider.getIntrinsicWidth(); |
|||
top = parent.getPaddingTop(); |
|||
bottom = parent.getHeight() - parent.getPaddingBottom(); |
|||
} |
|||
|
|||
for (int i = mShowFirstDivider ? 0 : 1; i < childCount; i++) { |
|||
View child = parent.getChildAt(i); |
|||
RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams(); |
|||
|
|||
if (orientation == LinearLayoutManager.VERTICAL) { |
|||
top = child.getTop() - params.topMargin; |
|||
bottom = top + size; |
|||
} else { //horizontal |
|||
left = child.getLeft() - params.leftMargin; |
|||
right = left + size; |
|||
} |
|||
mDivider.setBounds(left, top, right, bottom); |
|||
mDivider.draw(c); |
|||
} |
|||
|
|||
// show last divider |
|||
if (mShowLastDivider && childCount > 0) { |
|||
View child = parent.getChildAt(childCount - 1); |
|||
RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams(); |
|||
if (orientation == LinearLayoutManager.VERTICAL) { |
|||
top = child.getBottom() + params.bottomMargin; |
|||
bottom = top + size; |
|||
} else { // horizontal |
|||
left = child.getRight() + params.rightMargin; |
|||
right = left + size; |
|||
} |
|||
mDivider.setBounds(left, top, right, bottom); |
|||
mDivider.draw(c); |
|||
} |
|||
} |
|||
|
|||
private int getOrientation(RecyclerView parent) { |
|||
if (parent.getLayoutManager() instanceof LinearLayoutManager) { |
|||
LinearLayoutManager layoutManager = (LinearLayoutManager) parent.getLayoutManager(); |
|||
return layoutManager.getOrientation(); |
|||
} else { |
|||
throw new IllegalStateException( |
|||
"DividerItemDecoration can only be used with a LinearLayoutManager."); |
|||
} |
|||
} |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue