@@ -100,6 +100,7 @@ public class SimpleTooltip implements PopupWindow.OnDismissListener {
100100 private final View mAnchorView ;
101101 private final boolean mTransparentOverlay ;
102102 private final float mOverlayOffset ;
103+ private final boolean mOverlayMatchParent ;
103104 private final float mMaxWidth ;
104105 private View mOverlay ;
105106 private ViewGroup mRootView ;
@@ -132,6 +133,7 @@ private SimpleTooltip(Builder builder) {
132133 mAnchorView = builder .anchorView ;
133134 mTransparentOverlay = builder .transparentOverlay ;
134135 mOverlayOffset = builder .overlayOffset ;
136+ mOverlayMatchParent = builder .overlayMatchParent ;
135137 mMaxWidth = builder .maxWidth ;
136138 mShowArrow = builder .showArrow ;
137139 mArrowWidth = builder .arrowWidth ;
@@ -145,7 +147,7 @@ private SimpleTooltip(Builder builder) {
145147 mOnDismissListener = builder .onDismissListener ;
146148 mOnShowListener = builder .onShowListener ;
147149 mFocusable = builder .focusable ;
148- mRootView = ( ViewGroup ) mAnchorView . getRootView ( );
150+ mRootView = SimpleTooltipUtils . findFrameLayout ( mAnchorView );
149151 mHighlightShape = builder .highlightShape ;
150152
151153 init ();
@@ -192,7 +194,10 @@ private void verifyDismissed() {
192194
193195 private void createOverlay () {
194196 mOverlay = mTransparentOverlay ? new View (mContext ) : new OverlayView (mContext , mAnchorView , mHighlightShape , mOverlayOffset );
195- mOverlay .setLayoutParams (new ViewGroup .LayoutParams (ViewGroup .LayoutParams .MATCH_PARENT , ViewGroup .LayoutParams .MATCH_PARENT ));
197+ if (mOverlayMatchParent )
198+ mOverlay .setLayoutParams (new ViewGroup .LayoutParams (ViewGroup .LayoutParams .MATCH_PARENT , ViewGroup .LayoutParams .MATCH_PARENT ));
199+ else
200+ mOverlay .setLayoutParams (new ViewGroup .LayoutParams (mRootView .getWidth (), mRootView .getHeight ()));
196201 mOverlay .setOnTouchListener (mOverlayTouchListener );
197202 mRootView .addView (mOverlay );
198203 }
@@ -546,6 +551,7 @@ public static class Builder {
546551 private int gravity = Gravity .BOTTOM ;
547552 private boolean transparentOverlay = true ;
548553 private float overlayOffset = -1 ;
554+ private boolean overlayMatchParent = true ;
549555 private float maxWidth ;
550556 private boolean showArrow = true ;
551557 private Drawable arrowDrawable ;
@@ -1052,5 +1058,20 @@ public Builder overlayOffset(@Dimension float overlayOffset) {
10521058 this .overlayOffset = overlayOffset ;
10531059 return this ;
10541060 }
1061+
1062+ /**
1063+ * <div class="pt">Define o comportamento do overlay. Utilizado para casos onde a view de Overlay não pode ser MATCH_PARENT.
1064+ * Como em uma Dialog ou DialogFragment.</div>
1065+ * <div class="en">Sets the behavior of the overlay view. Used for cases where the Overlay view can not be MATCH_PARENT.
1066+ * Like in a Dialog or DialogFragment.</div>
1067+ *
1068+ * @param overlayMatchParent <div class="pt">True se o overlay deve ser MATCH_PARENT. False se ele deve obter o mesmo tamanho do pai.</div>
1069+ * <div class="en">True if the overlay should be MATCH_PARENT. False if it should get the same size as the parent.</div>
1070+ * @return this
1071+ */
1072+ public Builder overlayMatchParent (boolean overlayMatchParent ) {
1073+ this .overlayMatchParent = overlayMatchParent ;
1074+ return this ;
1075+ }
10551076 }
10561077}
0 commit comments