当前位置: 首页 > 知识库问答 >
问题:

无法在特定布局下显示PopUpWindow

农星华
2023-03-14

我想在单击按钮时关闭软键盘后,在LinearLayout下显示PopUpWindow。

这就是我所寻找的

当用户点击按钮时,键盘隐藏,然后弹出窗口显示在线性布局下(最初是键盘区域)。就像下面这张照片

我尝试这个代码:

button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //hide the keyboard
            InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(v.getWindowToken(), 0);

            LinearLayout bottomBar = (LinearLayout)findViewById(R.id.bottomBar);

            LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
            View popupView = inflater.inflate(R.layout.popup_window, null);

            // create the popup window
            int width = LinearLayout.LayoutParams.MATCH_PARENT;
            int height = LinearLayout.LayoutParams.WRAP_CONTENT;
            boolean focusable = true; dismiss it
            final PopupWindow popupWindow = new PopupWindow(popupView, width, height, focusable);

            // show the popup window
            popupWindow.showAtLocation(bottomBar, Gravity.BOTTOM, 0, 0);
       }
   }

但最后的弹出窗口节目是这样的:

包含该按钮的LinearLayout,当键盘被隐藏时,会转到屏幕底部,PopUpWindow显示在LinearLayout的顶部,因此它变得不可见。如下图所示:

那么,我怎样才能得到像第一张图片那样的欲望行为呢?隐藏键盘后,在线性布局下显示PopUpWindow。


共有1个答案

栾景胜
2023-03-14

为什么你要用弹出窗口来做这个。我建议你保持简单的布局。该布局将包含两个视图(带按钮的布局和其下的弹出式布局)。只需在屏幕底部添加此布局,并在需要时设置弹出布局可见性VISIBLE VISIBLE/GONE。您可以在显示或隐藏弹出式布局的同时添加动画,方法是:使用幻灯片向上和向下动画显示/隐藏视图。

 类似资料:
  • 问题内容: 我试图使用此代码从我的主要活动中调用第二个活动 作为我的OrderSummaryActivity: 但是布局不会在此活动中显示,只是空白页。这是布局的xml: 有什么提示吗? 问题答案: 尝试将 OrderSummaryActivity.class 更改为:

  • 基于我在画布上使用的代码和截图,我试着填充一个红色的矩形,但是没有效果。如何才能确保只填充最上面一行左起第二个矩形?

  • 我想知道在RecyclerView中实现页脚的正确方法是什么,它可以用来显示不同的视图。下面是几个例子 通过重新加载按钮查看网络错误。 查看从服务器加载数据时的进度条。 当没有更多可用数据时查看。 等等。 我遇到了https://stackoverflow.com/a/29168617/371557,其中提到我必须重写getItemViewType并在onCreateViewHolder中膨胀不同

  • ![我已经以线性布局(下面给出的代码)对其进行了编码,但想知道如何使用相对布局进行相同的操作,或者这只是一个考虑到布局的坏主意? 线性布局 - ][1] 使用相对布局时,我的ImageView不会显示在屏幕上:

  • 问题内容: 因此,我有一个图形,它以10000个时间步长的数量级运行,因此我有很多数据点,并且xtick之间的距离很远,这很酷,但是我想在xaxis上显示该点绘制数据时的位置。在这种情况下,我要显示的xtick是271。因此,如果我已经知道要显示的刻度,是否有办法将271刻度自动插入到x轴上? 问题答案: 如果在平移/放大时更新刻度线并不重要(即,如果绘图不适合交互式使用),则可以使用该方法手动设

  • 问题内容: 我有一个全屏Java应用程序,它将在Windows 7计算机上的8显示器数字标牌类型显示器上运行。我需要能够在特定的物理监视器上显示内容。理想情况下,我希望显示器在“显示器属性”->“设置”中按1-8顺序排列,但是许多拔出/插入和重新排序的尝试均无法通过“显示器属性”->“设置”使物理监视器以任何确定的顺序出现。我可以对其重新排序,但是当我的java程序在显示器上检索信息时,它不在Wi