@@ -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