Buggy code:
public class ShowcaseView extends RelativeLayout implements ShowcaseViewApi , View . OnTouchListener { private static final int HOLO_BLUE = Color . parseColor ( "#33B5E5" ) ; private final Button mEndButton ; private final TextDrawer textDrawer ; private final ShowcaseDrawer showcaseDrawer ; private final ShowcaseAreaCalculator showcaseAreaCalculator ; private final AnimationFactory animationFactory ; private final ShotStateStore shotStateStore ; private int showcaseX = - 1 ; private int showcaseY = - 1 ; private float scaleMultiplier = 1.0F ; private boolean hasCustomClickListener = false ; private boolean blockTouches = true ; private boolean hideOnTouch = false ; private OnShowcaseEventListener mEventListener = OnShowcaseEventListener . NONE ; private boolean hasAlteredText = false ; private boolean hasNoTarget = false ; private Target pendingTarget = null ; private boolean isAnimated = false ; private boolean shouldCentreText ; private Bitmap bitmapBuffer ; private long fadeInMillis ; private long fadeOutMillis ; private boolean isShowing ; public boolean hasManualTextPosShift ; public boolean hasManualBoxPosShift ; private int textXPosShift ; private int textYPosShift ; protected ShowcaseView ( Context context , boolean newStyle ) { } protected ShowcaseView ( Context context , AttributeSet attrs , int defStyle , boolean newStyle ) { } private void init ( ) { } private boolean hasShot ( ) { } void setShowcasePosition ( Point point ) { } void setShowcasePosition ( int x , int y ) { } public void setTarget ( final Target target ) { } public void setShowcase ( final Target target , final boolean animate ) { } private void updateBitmap ( ) { } private void updatePosition ( ) { } private boolean haveBoundsChanged ( ) { } public boolean hasShowcaseView ( ) { } public void setShowcaseX ( int x ) { } public void setShowcaseY ( int y ) { } public int getShowcaseX ( ) { } public int getShowcaseY ( ) { } public void overrideButtonClick ( OnClickListener listener ) { } public void setOnShowcaseEventListener ( OnShowcaseEventListener listener ) { } public void setButtonText ( CharSequence text ) { } private void recalculateText ( ) { } @ SuppressWarnings ( "NullableProblems" ) @ Override protected void dispatchDraw ( Canvas canvas ) { } @ Override public void hide ( ) { } private void clearBitmap ( ) { } private void fadeOutShowcase ( ) { } @ Override public void show ( ) { } private void fadeInShowcase ( ) { } @ Override public boolean onTouch ( View view , MotionEvent motionEvent ) { } private static void insertShowcaseView ( ShowcaseView showcaseView , Activity activity ) { if ( ( VERSION . SDK_INT ) >= ( VERSION_CODES . LOLLIPOP ) ) { Display display = ( ( WindowManager ) ( activity . getSystemService ( Context . WINDOW_SERVICE ) ) ) . getDefaultDisplay ( ) ; int myOrientation = display . getRotation ( ) ; switch ( myOrientation ) { case Surface . ROTATION_0 : showcaseView . setPadding ( 0 , 0 , 0 , ApiUtils . getSoftButtonsBarSizePort ( activity ) ) ; break ; case Surface . ROTATION_90 : showcaseView . setPadding ( 0 , 0 , ApiUtils . getSoftButtonsBarSizeLand ( activity ) , 0 ) ; break ; case Surface . ROTATION_180 : <START_BUG> showcaseView . setPadding ( 0 , 0 , ApiUtils . getSoftButtonsBarSizeLand ( activity ) , 0 ) ; <END_BUG> break ; case Surface . ROTATION_270 : showcaseView . setPadding ( 0 , 0 , ApiUtils . getSoftButtonsBarSizeLand ( activity ) , 0 ) ; break ; } } ( ( ViewGroup ) ( activity . getWindow ( ) . getDecorView ( ) ) ) . addView ( showcaseView ) ; if ( ! ( showcaseView . hasShot ( ) ) ) { showcaseView . show ( ) ; } else { showcaseView . hideImmediate ( ) ; } } private void hideImmediate ( ) { } @ Override public void setContentTitle ( CharSequence title ) { } @ Override public void setContentText ( CharSequence text ) { } private void setScaleMultiplier ( float scaleMultiplier ) { } public void hideButton ( ) { } public void showButton ( ) { } public static class Builder { final ShowcaseView showcaseView ; private final Activity activity ; public Builder ( Activity activity ) { } public Builder ( Activity activity , boolean useNewStyle ) { } public ShowcaseView build ( ) { } public ShowcaseView . Builder setContentTitle ( int resId ) { } public ShowcaseView . Builder setContentTitle ( CharSequence title ) { } public ShowcaseView . Builder setContentText ( int resId ) { } public ShowcaseView . Builder setContentText ( CharSequence text ) { } public ShowcaseView . Builder setButtonText ( int resId ) { } public ShowcaseView . Builder setButtonText ( CharSequence text ) { } public ShowcaseView . Builder setTarget ( Target target ) { } public ShowcaseView . Builder setStyle ( int theme ) { } public ShowcaseView . Builder setOnClickListener ( OnClickListener onClickListener ) { } public ShowcaseView . Builder doNotBlockTouches ( ) { } public ShowcaseView . Builder hideOnTouchOutside ( ) { } public ShowcaseView . Builder singleShot ( long shotId ) { } public ShowcaseView . Builder setShowcaseEventListener ( OnShowcaseEventListener showcaseEventListener ) { } public ShowcaseView . Builder textPostionShift ( int textXPosShift , int textYPosShift ) { } public ShowcaseView . Builder scaleCircle ( float scaleMultiplier ) { } } public void setShouldCentreText ( boolean shouldCentreText ) { } private void setSingleShot ( long shotId ) { } @ Override public void setButtonPosition ( RelativeLayout . LayoutParams layoutParams ) { } private void setFadeDurations ( long fadeInMillis , long fadeOutMillis ) { } @ Override public void setHideOnTouchOutside ( boolean hideOnTouch ) { } @ Override public void setBlocksTouches ( boolean blockTouches ) { } @ Override public void setStyle ( int theme ) { } @ Override public boolean isShowing ( ) { } private void updateStyle ( TypedArray styled , boolean invalidate ) { } private void tintButton ( int showcaseColor , boolean tintButton ) { }

Fix:
showcaseView . setPadding ( 0 , 0 , 0 , ApiUtils . getSoftButtonsBarSizePort ( activity ) ) ;