Java Code Examples for android.widget.PopupWindow#setClippingEnabled()

The following examples show how to use android.widget.PopupWindow#setClippingEnabled() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: CustomPopupWindow.java    From YCDialog with Apache License 2.0 6 votes vote down vote up
private void apply(PopupWindow mPopupWindow) {
    mPopupWindow.setClippingEnabled(this.mClippEnable);
    if(this.mIgnoreCheekPress) {
        mPopupWindow.setIgnoreCheekPress();
    }

    if(this.mInputMode != -1) {
        mPopupWindow.setInputMethodMode(this.mInputMode);
    }

    if(this.mSoftInputMode != -1) {
        mPopupWindow.setSoftInputMode(this.mSoftInputMode);
    }

    if(this.mOnDismissListener != null) {
        mPopupWindow.setOnDismissListener(this.mOnDismissListener);
    }

    if(this.mOnTouchListener != null) {
        mPopupWindow.setTouchInterceptor(this.mOnTouchListener);
    }

    mPopupWindow.setTouchable(this.mTouchable);
}
 
Example 2
Source File: Keyboard.java    From mongol-library with MIT License 6 votes vote down vote up
private void layoutAndShowPopupWindow(Key key, int xPosition) {
    popupWindow = new PopupWindow(popupView,
            LinearLayout.LayoutParams.WRAP_CONTENT,
            LinearLayout.LayoutParams.WRAP_CONTENT);
    popupWindow.setClippingEnabled(false);
    int[] location = new int[2];
    key.getLocationInWindow(location);
    int measureSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
    popupView.measure(measureSpec, measureSpec);
    int popupWidth = popupView.getMeasuredWidth();
    int spaceAboveKey = key.getHeight() / 4;
    int x = xPosition - popupWidth / popupView.getChildCount() / 2;
    int screenWidth = getScreenWidth();
    if (x < 0) {
        x = 0;
    } else if (x + popupWidth > screenWidth) {
        x = screenWidth - popupWidth;
    }
    int y = location[1] - popupView.getMeasuredHeight() - spaceAboveKey;
    popupWindow.showAtLocation(key, Gravity.NO_GRAVITY, x, y);
    //popupWindow.showAsDropDown(key, 0, -500);
}
 
Example 3
Source File: PopupActivity.java    From ImmersionBar with Apache License 2.0 6 votes vote down vote up
/**
 * 弹出popupWindow
 * Show popup.
 *
 * @param gravity        the gravity
 * @param width          the width
 * @param height         the height
 * @param animationStyle the animation style
 */
private void showPopup(int gravity, int width, int height, int animationStyle) {
    mPopupView = LayoutInflater.from(mActivity).inflate(R.layout.popup_demo, null);
    mPopupWindow = new PopupWindow(mPopupView, width, height);
    //以下属性响应空白处消失和实体按键返回消失popup
    mPopupWindow.setOutsideTouchable(true);
    mPopupWindow.setFocusable(true);
    mPopupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
    //沉浸式模式下,以下两个属性并不起作用
    mPopupWindow.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED);
    mPopupWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
    //重点,此方法可以让布局延伸到状态栏和导航栏
    mPopupWindow.setClippingEnabled(false);
    //设置动画
    mPopupWindow.setAnimationStyle(animationStyle);
    //弹出
    mPopupWindow.showAtLocation(getWindow().getDecorView(), gravity, 0, 0);
    //弹出后背景alpha值
    backgroundAlpha(0.5f);
    //消失后恢复背景alpha值
    mPopupWindow.setOnDismissListener(() -> backgroundAlpha(1f));
    //适配弹出popup后布局被状态栏和导航栏遮挡问题
    updatePopupView();
}
 
Example 4
Source File: CustomPopWindow.java    From LLApp with Apache License 2.0 6 votes vote down vote up
/**
 * 添加一些属性设置
 * @param popupWindow
 */
private void apply(PopupWindow popupWindow){
    popupWindow.setClippingEnabled(mClippEnable);
    if(mIgnoreCheekPress){
        popupWindow.setIgnoreCheekPress();
    }
    if(mInputMode!=-1){
        popupWindow.setInputMethodMode(mInputMode);
    }
    if(mSoftInputMode!=-1){
        popupWindow.setSoftInputMode(mSoftInputMode);
    }
    if(mOnDismissListener!=null){
        popupWindow.setOnDismissListener(mOnDismissListener);
    }
    if(mOnTouchListener!=null){
        popupWindow.setTouchInterceptor(mOnTouchListener);
    }
    popupWindow.setTouchable(mTouchable);



}
 
Example 5
Source File: InsertionHandleController.java    From android-chromium with BSD 2-Clause "Simplified" License 6 votes vote down vote up
public PastePopupMenu() {
    mContainer = new PopupWindow(mContext, null,
            android.R.attr.textSelectHandleWindowStyle);
    mContainer.setSplitTouchEnabled(true);
    mContainer.setClippingEnabled(false);

    mContainer.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
    mContainer.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);

    final int[] POPUP_LAYOUT_ATTRS = {
        android.R.attr.textEditPasteWindowLayout,
        android.R.attr.textEditNoPasteWindowLayout,
        android.R.attr.textEditSidePasteWindowLayout,
        android.R.attr.textEditSideNoPasteWindowLayout,
    };

    mPasteViews = new View[POPUP_LAYOUT_ATTRS.length];
    mPasteViewLayouts = new int[POPUP_LAYOUT_ATTRS.length];

    TypedArray attrs = mContext.obtainStyledAttributes(POPUP_LAYOUT_ATTRS);
    for (int i = 0; i < attrs.length(); ++i) {
        mPasteViewLayouts[i] = attrs.getResourceId(attrs.getIndex(i), 0);
    }
    attrs.recycle();
}
 
Example 6
Source File: InsertionHandleController.java    From android-chromium with BSD 2-Clause "Simplified" License 6 votes vote down vote up
public PastePopupMenu() {
    mContainer = new PopupWindow(mContext, null,
            android.R.attr.textSelectHandleWindowStyle);
    mContainer.setSplitTouchEnabled(true);
    mContainer.setClippingEnabled(false);

    mContainer.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
    mContainer.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);

    final int[] POPUP_LAYOUT_ATTRS = {
        android.R.attr.textEditPasteWindowLayout,
        android.R.attr.textEditNoPasteWindowLayout,
        android.R.attr.textEditSidePasteWindowLayout,
        android.R.attr.textEditSideNoPasteWindowLayout,
    };

    mPasteViews = new View[POPUP_LAYOUT_ATTRS.length];
    mPasteViewLayouts = new int[POPUP_LAYOUT_ATTRS.length];

    TypedArray attrs = mContext.obtainStyledAttributes(POPUP_LAYOUT_ATTRS);
    for (int i = 0; i < attrs.length(); ++i) {
        mPasteViewLayouts[i] = attrs.getResourceId(attrs.getIndex(i), 0);
    }
    attrs.recycle();
}
 
Example 7
Source File: TextSelectionHandlePopup.java    From revolution-irc with GNU General Public License v3.0 5 votes vote down vote up
public TextSelectionHandlePopup(Context ctx, boolean rightHandle) {
    mView = new TextSelectionHandleView(ctx, rightHandle);
    mWindow = new PopupWindow(mView.getContext(), null, android.R.attr.textSelectHandleWindowStyle);
    mWindow.setSplitTouchEnabled(true);
    mWindow.setClippingEnabled(false);
    mWindow.setContentView(mView);
    mWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
    mWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
    mView.measure(0, 0);
}
 
Example 8
Source File: ReactionsPopup.java    From aptoide-client-v8 with GNU General Public License v3.0 5 votes vote down vote up
/**
 * Constructor to create a new reactions popup with an anchor view.
 *
 * @param context Context the reactions popup is running in, through which it
 * can access the current theme, resources, etc.
 * @param anchor Anchor view for this popup. The popup will appear on top of
 */

public ReactionsPopup(@NonNull Context context, @NonNull View anchor) {
  this.anchorView = anchor;

  popup = new PopupWindow();
  popup.setWindowLayoutMode(WindowManager.LayoutParams.WRAP_CONTENT,
      WindowManager.LayoutParams.WRAP_CONTENT);
  reactionsView = new ReactionsView(context);
  reactionsView.setVisibility(View.VISIBLE);
  popup.setContentView(reactionsView);
  popup.setFocusable(true);
  popup.setClippingEnabled(true);
  popup.setBackgroundDrawable(
      ContextCompat.getDrawable(context, R.drawable.rounded_corners_reactions));
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    popup.setElevation(10);
  }

  reactionsView.setCallback(reactionType -> {
    if (reactionClickListener != null) {
      reactionClickListener.onReactionItemClick(reactionType);
    }
  });

  popup.setOnDismissListener(() -> {
    if (onDismissListener != null) {
      onDismissListener.onDismiss(reactionsView);
    }
  });
}
 
Example 9
Source File: LegacyPastePopupMenu.java    From 365browser with Apache License 2.0 5 votes vote down vote up
public LegacyPastePopupMenu(
        Context context, View parent, final PastePopupMenuDelegate delegate) {
    mParent = parent;
    mDelegate = delegate;
    mContext = context;
    mContainer = new PopupWindow(mContext, null, android.R.attr.textSelectHandleWindowStyle);
    mContainer.setSplitTouchEnabled(true);
    mContainer.setClippingEnabled(false);
    mContainer.setAnimationStyle(0);

    mContainer.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
    mContainer.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);

    final int[] popupLayoutAttrs = {
            android.R.attr.textEditPasteWindowLayout,
    };

    TypedArray attrs = mContext.getTheme().obtainStyledAttributes(popupLayoutAttrs);
    mPasteViewLayout = attrs.getResourceId(attrs.getIndex(0), 0);

    attrs.recycle();

    // Convert line offset dips to pixels.
    mLineOffsetY = (int) TypedValue.applyDimension(
            TypedValue.COMPLEX_UNIT_DIP, 5.0f, mContext.getResources().getDisplayMetrics());
    mWidthOffsetX = (int) TypedValue.applyDimension(
            TypedValue.COMPLEX_UNIT_DIP, 30.0f, mContext.getResources().getDisplayMetrics());

    final int statusBarHeightResourceId =
            mContext.getResources().getIdentifier("status_bar_height", "dimen", "android");
    if (statusBarHeightResourceId > 0) {
        mStatusBarHeight =
                mContext.getResources().getDimensionPixelSize(statusBarHeightResourceId);
    }
}
 
Example 10
Source File: FloatingToolbar.java    From Telegram-FOSS with GNU General Public License v2.0 5 votes vote down vote up
private static PopupWindow createPopupWindow(ViewGroup content) {
    ViewGroup popupContentHolder = new LinearLayout(content.getContext());
    PopupWindow popupWindow = new PopupWindow(popupContentHolder);
    popupWindow.setClippingEnabled(false);
    popupWindow.setAnimationStyle(0);
    popupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
    content.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
    popupContentHolder.addView(content);
    return popupWindow;
}
 
Example 11
Source File: FloatingToolbar.java    From Telegram with GNU General Public License v2.0 5 votes vote down vote up
private static PopupWindow createPopupWindow(ViewGroup content) {
    ViewGroup popupContentHolder = new LinearLayout(content.getContext());
    PopupWindow popupWindow = new PopupWindow(popupContentHolder);
    popupWindow.setClippingEnabled(false);
    popupWindow.setAnimationStyle(0);
    popupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
    content.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
    popupContentHolder.addView(content);
    return popupWindow;
}
 
Example 12
Source File: HandleView.java    From android-chromium with BSD 2-Clause "Simplified" License 5 votes vote down vote up
HandleView(CursorController controller, int pos, View parent,
        PositionObserver parentPositionObserver) {
    super(parent.getContext());
    Context context = parent.getContext();
    mParent = parent;
    mController = controller;
    mContainer = new PopupWindow(context, null, android.R.attr.textSelectHandleWindowStyle);
    mContainer.setSplitTouchEnabled(true);
    mContainer.setClippingEnabled(false);

    TypedArray a = context.obtainStyledAttributes(TEXT_VIEW_HANDLE_ATTRS);
    mTextSelectHandleLeftRes = a.getResourceId(a.getIndex(LEFT), 0);
    mTextSelectHandleRes = a.getResourceId(a.getIndex(CENTER), 0);
    mTextSelectHandleRightRes = a.getResourceId(a.getIndex(RIGHT), 0);
    a.recycle();

    setOrientation(pos);

    // Convert line offset dips to pixels.
    mLineOffsetY = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
            LINE_OFFSET_Y_DIP, context.getResources().getDisplayMetrics());

    mAlpha = 1.f;

    mParentPositionListener = new PositionObserver.Listener() {
        @Override
        public void onPositionChanged(int x, int y) {
            updateParentPosition(x, y);
        }
    };
    mParentPositionObserver = parentPositionObserver;
}
 
Example 13
Source File: HandleView.java    From android-chromium with BSD 2-Clause "Simplified" License 5 votes vote down vote up
HandleView(CursorController controller, int pos, View parent,
        PositionObserver parentPositionObserver) {
    super(parent.getContext());
    Context context = parent.getContext();
    mParent = parent;
    mController = controller;
    mContainer = new PopupWindow(context, null, android.R.attr.textSelectHandleWindowStyle);
    mContainer.setSplitTouchEnabled(true);
    mContainer.setClippingEnabled(false);

    TypedArray a = context.obtainStyledAttributes(TEXT_VIEW_HANDLE_ATTRS);
    mTextSelectHandleLeftRes = a.getResourceId(a.getIndex(LEFT), 0);
    mTextSelectHandleRes = a.getResourceId(a.getIndex(CENTER), 0);
    mTextSelectHandleRightRes = a.getResourceId(a.getIndex(RIGHT), 0);
    a.recycle();

    setOrientation(pos);

    // Convert line offset dips to pixels.
    mLineOffsetY = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
            LINE_OFFSET_Y_DIP, context.getResources().getDisplayMetrics());

    mAlpha = 1.f;

    mParentPositionListener = new PositionObserver.Listener() {
        @Override
        public void onPositionChanged(int x, int y) {
            updateParentPosition(x, y);
        }
    };
    mParentPositionObserver = parentPositionObserver;
}
 
Example 14
Source File: LatinKeyboardView.java    From hackerskeyboard with Apache License 2.0 4 votes vote down vote up
public LatinKeyboardView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);

    // TODO(klausw): migrate attribute styles to LatinKeyboardView?
    TypedArray a = context.obtainStyledAttributes(
            attrs, R.styleable.LatinKeyboardBaseView, defStyle, R.style.LatinKeyboardBaseView);
    LayoutInflater inflate =
            (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    int previewLayout = 0;
    int n = a.getIndexCount();
    for (int i = 0; i < n; i++) {
        int attr = a.getIndex(i);

        switch (attr) {
        case R.styleable.LatinKeyboardBaseView_keyPreviewLayout:
            previewLayout = a.getResourceId(attr, 0);
            if (previewLayout == R.layout.null_layout) previewLayout = 0;
            break;
        case R.styleable.LatinKeyboardBaseView_keyPreviewOffset:
            mPreviewOffset = a.getDimensionPixelOffset(attr, 0);
            break;
        case R.styleable.LatinKeyboardBaseView_keyPreviewHeight:
            mPreviewHeight = a.getDimensionPixelSize(attr, 80);
            break;
        case R.styleable.LatinKeyboardBaseView_popupLayout:
            mPopupLayout = a.getResourceId(attr, 0);
            if (mPopupLayout == R.layout.null_layout) mPopupLayout = 0;
            break;
        }
    }

    final Resources res = getResources();

    // If true, popups are forced to remain inside the keyboard area. If false,
    // they can extend above it. Enable clipping just for Android P since drawing
    // outside the keyboard area doesn't work on that version.
    boolean clippingEnabled = (Build.VERSION.SDK_INT >= 28 /* Build.VERSION_CODES.P */);

    if (previewLayout != 0) {
        mPreviewPopup = new PopupWindow(context);
        if (!isInEditMode())
            Log.i(TAG, "new mPreviewPopup " + mPreviewPopup + " from " + this);
        mPreviewText = (TextView) inflate.inflate(previewLayout, null);
        mPreviewTextSizeLarge = (int) res.getDimension(R.dimen.key_preview_text_size_large);
        mPreviewPopup.setContentView(mPreviewText);
        mPreviewPopup.setBackgroundDrawable(null);
        mPreviewPopup.setTouchable(false);
        mPreviewPopup.setAnimationStyle(R.style.KeyPreviewAnimation);
        mPreviewPopup.setClippingEnabled(clippingEnabled);
    } else {
        mShowPreview = false;
    }

    if (mPopupLayout != 0) {
        mMiniKeyboardParent = this;
        mMiniKeyboardPopup = new PopupWindow(context);
        if (!isInEditMode())
            Log.i(TAG, "new mMiniKeyboardPopup " + mMiniKeyboardPopup + " from " + this);
        mMiniKeyboardPopup.setBackgroundDrawable(null);
        mMiniKeyboardPopup.setAnimationStyle(R.style.MiniKeyboardAnimation);
        mMiniKeyboardPopup.setClippingEnabled(clippingEnabled);
        mMiniKeyboardVisible = false;
    }
}
 
Example 15
Source File: CandidateView.java    From hackerskeyboard with Apache License 2.0 4 votes vote down vote up
/**
 * Construct a CandidateView for showing suggested words for completion.
 * @param context
 * @param attrs
 */
public CandidateView(Context context, AttributeSet attrs) {
    super(context, attrs);
    mSelectionHighlight = context.getResources().getDrawable(
            R.drawable.list_selector_background_pressed);

    LayoutInflater inflate =
        (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    Resources res = context.getResources();
    mPreviewPopup = new PopupWindow(context);
    mPreviewText = (TextView) inflate.inflate(R.layout.candidate_preview, null);
    mPreviewPopup.setWindowLayoutMode(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    mPreviewPopup.setContentView(mPreviewText);
    mPreviewPopup.setBackgroundDrawable(null);
    mPreviewPopup.setAnimationStyle(R.style.KeyPreviewAnimation);
    // Enable clipping for Android P, keep disabled for older versions.
    boolean clippingEnabled = (Build.VERSION.SDK_INT >= 28 /* Build.VERSION_CODES.P */);
    mPreviewPopup.setClippingEnabled(clippingEnabled);
    mColorNormal = res.getColor(R.color.candidate_normal);
    mColorRecommended = res.getColor(R.color.candidate_recommended);
    mColorOther = res.getColor(R.color.candidate_other);
    mDivider = res.getDrawable(R.drawable.keyboard_suggest_strip_divider);
    mAddToDictionaryHint = res.getString(R.string.hint_add_to_dictionary);

    mPaint = new Paint();
    mPaint.setColor(mColorNormal);
    mPaint.setAntiAlias(true);
    mPaint.setTextSize(mPreviewText.getTextSize() * LatinIME.sKeyboardSettings.candidateScalePref);
    mPaint.setStrokeWidth(0);
    mPaint.setTextAlign(Align.CENTER);
    mDescent = (int) mPaint.descent();
    mMinTouchableWidth = (int)res.getDimension(R.dimen.candidate_min_touchable_width);
    
    mGestureDetector = new GestureDetector(
            new CandidateStripGestureListener(mMinTouchableWidth));
    setWillNotDraw(false);
    setHorizontalScrollBarEnabled(false);
    setVerticalScrollBarEnabled(false);
    scrollTo(0, getScrollY());
}