PopupWindow没在我希望出现的地方出现

ogiso雪菜 2018-05-01 02:05:03
我想实现的是点击某个位置,就在某个位置弹出一个popupwindow,popupwindow里有一个edittext控件,用来输入,但是就像下图这样,我点击的是屏幕的左上角,它却出现在屏幕左中位置
参考了这个博客https://blog.csdn.net/niubitianping/article/details/78421214
但他用的语音是kotlin。如果可以希望能指导下,怎么做比较好,就是画板,我实现了画的功能,现在想实现插入文字功能

public void showTextPopup(float preX,float preY){
int x = (int) preX;
int y = (int) preY;
EditText mEditText = new EditText(getContext());
mEditText.setText("输入文字");
PopupWindow mTextPopup = new PopupWindow(mEditText, WindowManager.LayoutParams.WRAP_CONTENT,WindowManager.LayoutParams.WRAP_CONTENT,true);
mEditText.setFocusable(true);
mEditText.setFocusableInTouchMode(true);
//让popup显示在软键盘上面
mTextPopup.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
mEditText.requestFocus();
mTextPopup.setOutsideTouchable(true);
//自动弹出软键盘,会导致布局变化,重测量、绘制
InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Service.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(0,InputMethodManager.HIDE_NOT_ALWAYS);
mTextPopup.showAtLocation(this, Gravity.LEFT,x,y);
}

点击事件

case MotionEvent.ACTION_DOWN:
//从前一个点绘制到当前点之后,把当前点定义成下次绘制的一个点
if(currentStyle==3){
showTextPopup(x,y);
}


...全文
899 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jing丶無雙 2018-05-03
  • 打赏
  • 举报
回复
Popupwindow其实和DiaLog很相似,它们都属于弹出框,只是Popupwindow没有显示那一层半透明的模板层效果,Popupwindow关闭后就能点击其他地方了
ogiso雪菜 2018-05-02
  • 打赏
  • 举报
回复
引用 1 楼 xj396282771 的回复:
改成这样即可
mTextPopup.showAtLocation(this, Gravity.TOP | Gravity.LEFT, x, y);
原因: 第二个参数:PopupWindow默认是在屏幕的中间。Gravity.TOP | Gravity.RIGHT指的就是屏幕的右上角,那么PopupWindow的中心点坐标是(屏幕宽,0),而Gravity.LEFT表示PopupWindow的中心点坐标是(0,1/2屏幕高),你这里是想中心点坐标是(0,0)那么这样设置Gravity.TOP | Gravity.LEFT就行了
非常感谢,能不能再问个问题,为什么我生成Popupwindow后,虽然可以输入文字,但是再点其他任何地方都没反应,就好像全屏都就只剩下这个文本输入框了一样
Jing丶無雙 2018-05-02
  • 打赏
  • 举报
回复
改成这样即可
mTextPopup.showAtLocation(this, Gravity.TOP | Gravity.LEFT, x, y);
原因: 第二个参数:PopupWindow默认是在屏幕的中间。Gravity.TOP | Gravity.RIGHT指的就是屏幕的右上角,那么PopupWindow的中心点坐标是(屏幕宽,0),而Gravity.LEFT表示PopupWindow的中心点坐标是(0,1/2屏幕高),你这里是想中心点坐标是(0,0)那么这样设置Gravity.TOP | Gravity.LEFT就行了

80,348

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧