【问题标题】:Android. How to show popup window directly above button安卓。如何在按钮上方直接显示弹出窗口
【发布时间】:2019-06-03 07:13:35
【问题描述】:

我需要在按钮上方直接显示弹出窗口。我的按钮放置在滚动视图内,并且弹出窗口始终显示在按钮下方。这是我的代码:

  private void showPopup(View view, String text) {
    if (infoPopup == null) {
        LayoutInflater layoutInflater = LayoutInflater.from(getActivity());
        View popupView = layoutInflater.inflate(R.layout.popup_credit_request_passport, null);
        TextView tvPopupText = popupView.findViewById(R.id.tv_popup_text);
        tvPopupText.setMovementMethod(new ScrollingMovementMethod());
        tvPopupText.setText(text);
        FrameLayout flBackground = popupView.findViewById(R.id.fl_background);
        flBackground.setBackground(new BubbleDrawable(getContext(), R.color.azure, 16, 16, 8));

        infoPopup = new PopupWindow(popupView,
                ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.WRAP_CONTENT);
        infoPopup.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
        infoPopup.setOutsideTouchable(true);

        infoPopup.showAtLocation(view, Gravity.TOP, (int) view.getX(), (int) view.getY());

    } else {
        dismissInfoPopup();
    }
}

但这行不通。请帮帮我。

【问题讨论】:

  • 你在函数中传递的视图是什么?使用 View 的 getLocationOnScreen() 方法并传递一个 int 数组来获取屏幕中的 Location,然后使用 showAtLocation() 方法中的那些,在该函数中传递 Button...
  • 并举例说明您在此处尝试实现的目标,设计或其他内容

标签: java android scrollview popupwindow


【解决方案1】:

当你必须显示弹窗时,找出按钮在屏幕中的位置,然后使用showAtLocation()方法,如Prachi所说的使用Gravity.TOPx,y coordinates屏幕上的按钮...

【讨论】:

    【解决方案2】:

    重力改为顶部并根据您的要求重置您的坐标。

    infoPopup.showAtLocation(view, Gravity.TOP, 0, (int) view.getY());
    

    【讨论】:

    • 感谢您的回答,但现在弹出窗口显示在屏幕顶部,而不是按钮上方
    • 我告诉过你..你必须根据要求设置坐标...我编辑了我的答案你可以试试这个..
    • 我把弹窗放在按钮上面,但是弹窗的方向是往上,能不能把方向改到底部?
    • 您想在哪个确切位置显示弹出窗口? . 对于视图顶部(按钮)使用 Gravity.Top,对于视图底部(按钮)使用 Gravity.Bottom。通过使用 (int) view.getX() 和 (int) view.getY(),您可以获得视图(按钮)的精确坐标,并可以在任何特定位置显示弹出窗口。
    • 确保将按钮传递给参数“view”..调用 showPopup(button,"your text")
    猜你喜欢
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多