Skip to content

Commit 50f259b

Browse files
committed
Implement fixes for rendering with GridLayoutManager
1 parent c76d0e0 commit 50f259b

File tree

3 files changed

+29
-23
lines changed

3 files changed

+29
-23
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,4 @@ org.gradle.jvmargs=-Xmx1536m
1414
# When configured, Gradle will run in incubating parallel mode.
1515
# This option should only be used with decoupled projects. More details, visit
1616
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
17-
# org.gradle.parallel=true
17+
org.gradle.parallel=true

recyclerview-swipedecorator/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
apply plugin: 'com.android.library'
22

3-
int VERSION_CODE = 4
4-
String VERSION_NAME = "1.2"
3+
int VERSION_CODE = 5
4+
String VERSION_NAME = "1.2.1"
55

66
android {
77
compileSdkVersion 28

recyclerview-swipedecorator/src/main/java/it/xabaras/android/recyclerview/swipedecorator/RecyclerViewSwipeDecorator.java

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -264,24 +264,26 @@ public void decorate() {
264264
int iconSize = 0;
265265
if ( swipeRightActionIconId != 0 && dX > iconHorizontalMargin ) {
266266
Drawable icon = ContextCompat.getDrawable(context, swipeRightActionIconId);
267-
iconSize = icon.getIntrinsicHeight();
268-
int halfIcon = iconSize / 2;
269-
int top = viewHolder.itemView.getTop() + ((viewHolder.itemView.getBottom() - viewHolder.itemView.getTop()) / 2 - halfIcon);
270-
icon.setBounds(iconHorizontalMargin, top, iconHorizontalMargin + icon.getIntrinsicWidth(), top + icon.getIntrinsicHeight());
271-
if ( swipeRightActionIconTint != null )
272-
icon.setColorFilter(swipeRightActionIconTint, PorterDuff.Mode.SRC_IN);
273-
icon.draw(canvas);
267+
if ( icon != null ) {
268+
iconSize = icon.getIntrinsicHeight();
269+
int halfIcon = iconSize / 2;
270+
int top = viewHolder.itemView.getTop() + ((viewHolder.itemView.getBottom() - viewHolder.itemView.getTop()) / 2 - halfIcon);
271+
icon.setBounds(viewHolder.itemView.getLeft() + iconHorizontalMargin, top, viewHolder.itemView.getLeft() + iconHorizontalMargin + icon.getIntrinsicWidth(), top + icon.getIntrinsicHeight());
272+
if (swipeRightActionIconTint != null)
273+
icon.setColorFilter(swipeRightActionIconTint, PorterDuff.Mode.SRC_IN);
274+
icon.draw(canvas);
275+
}
274276
}
275277

276-
if ( mSwipeRightText != null && mSwipeRightText.length() > 0 ) {
278+
if ( mSwipeRightText != null && mSwipeRightText.length() > 0 && dX > iconHorizontalMargin + iconSize) {
277279
TextPaint textPaint = new TextPaint();
278280
textPaint.setAntiAlias(true);
279281
textPaint.setTextSize(TypedValue.applyDimension(mSwipeRightTextUnit, mSwipeRightTextSize, context.getResources().getDisplayMetrics()));
280282
textPaint.setColor(mSwipeRightTextColor);
281283
textPaint.setTypeface(mSwipeRightTypeface);
282284

283-
int textTop = (int) (viewHolder.itemView.getTop() + ((viewHolder.itemView.getBottom() - viewHolder.itemView.getTop()) / 2 ) + textPaint.getTextSize()/2);
284-
canvas.drawText(mSwipeRightText, iconHorizontalMargin + iconSize + (iconSize > 0 ? iconHorizontalMargin/2 : 0), textTop,textPaint);
285+
int textTop = (int) (viewHolder.itemView.getTop() + ((viewHolder.itemView.getBottom() - viewHolder.itemView.getTop()) / 2.0) + textPaint.getTextSize()/2);
286+
canvas.drawText(mSwipeRightText, viewHolder.itemView.getLeft() + iconHorizontalMargin + iconSize + (iconSize > 0 ? iconHorizontalMargin/2 : 0), textTop,textPaint);
285287
}
286288

287289
} else if ( dX < 0 ) {
@@ -292,27 +294,31 @@ public void decorate() {
292294
background.draw(canvas);
293295
}
294296

297+
int iconSize = 0;
295298
int imgLeft = viewHolder.itemView.getRight();
296-
if ( swipeLeftActionIconId != 0 && dX < viewHolder.itemView.getRight() - iconHorizontalMargin ) {
299+
if ( swipeLeftActionIconId != 0 && dX < - iconHorizontalMargin ) {
297300
Drawable icon = ContextCompat.getDrawable(context, swipeLeftActionIconId);
298-
int halfIcon = icon.getIntrinsicHeight() / 2;
299-
int top = viewHolder.itemView.getTop() + ((viewHolder.itemView.getBottom() - viewHolder.itemView.getTop()) / 2 - halfIcon);
300-
imgLeft = viewHolder.itemView.getRight() - iconHorizontalMargin - halfIcon * 2;
301-
icon.setBounds(imgLeft, top, viewHolder.itemView.getRight() - iconHorizontalMargin, top + icon.getIntrinsicHeight());
302-
if ( swipeLeftActionIconTint != null )
303-
icon.setColorFilter(swipeLeftActionIconTint, PorterDuff.Mode.SRC_IN);
304-
icon.draw(canvas);
301+
if ( icon != null ) {
302+
iconSize = icon.getIntrinsicHeight();
303+
int halfIcon = iconSize / 2;
304+
int top = viewHolder.itemView.getTop() + ((viewHolder.itemView.getBottom() - viewHolder.itemView.getTop()) / 2 - halfIcon);
305+
imgLeft = viewHolder.itemView.getRight() - iconHorizontalMargin - halfIcon * 2;
306+
icon.setBounds(imgLeft, top, viewHolder.itemView.getRight() - iconHorizontalMargin, top + icon.getIntrinsicHeight());
307+
if (swipeLeftActionIconTint != null)
308+
icon.setColorFilter(swipeLeftActionIconTint, PorterDuff.Mode.SRC_IN);
309+
icon.draw(canvas);
310+
}
305311
}
306312

307-
if ( mSwipeLeftText != null && mSwipeLeftText.length() > 0 ) {
313+
if ( mSwipeLeftText != null && mSwipeLeftText.length() > 0 && dX < - iconHorizontalMargin - iconSize ) {
308314
TextPaint textPaint = new TextPaint();
309315
textPaint.setAntiAlias(true);
310316
textPaint.setTextSize(TypedValue.applyDimension(mSwipeLeftTextUnit, mSwipeLeftTextSize, context.getResources().getDisplayMetrics()));
311317
textPaint.setColor(mSwipeLeftTextColor);
312318
textPaint.setTypeface(mSwipeLeftTypeface);
313319

314320
float width = textPaint.measureText(mSwipeLeftText);
315-
int textTop = (int) (viewHolder.itemView.getTop() + ((viewHolder.itemView.getBottom() - viewHolder.itemView.getTop()) / 2) + textPaint.getTextSize() / 2);
321+
int textTop = (int) (viewHolder.itemView.getTop() + ((viewHolder.itemView.getBottom() - viewHolder.itemView.getTop()) / 2.0) + textPaint.getTextSize() / 2);
316322
canvas.drawText(mSwipeLeftText, imgLeft - width - ( imgLeft == viewHolder.itemView.getRight() ? iconHorizontalMargin : iconHorizontalMargin/2 ), textTop, textPaint);
317323
}
318324
}

0 commit comments

Comments
 (0)