PopupWindow自定义键盘

本文详细介绍了在Android应用中实现点击EditText弹出自定义键盘的需求。首先讨论了三种技术选型及其存在的问题,如popupwindow的移动动画、显示位置、背景设置等。接着,文章列举了在使用PopupWindow和自定义键盘过程中遇到的问题,包括WindowManager$BadTokenException错误、背景设置的重要性、尺寸匹配、测量控件高度的方法以及如何处理底部导航栏的影响。最后,提到了事件监听器的处理策略。
摘要由CSDN通过智能技术生成

功能需求描述:页面中点击一个按钮,底部弹出带有EditText的布局,点击EditText弹出自定义键盘,此布局与自定义键盘同步上移。键盘显示时,外部区域可操作。

一、技术选型
1.不使用popupwindow,直接在布局中使用visible和gone显示隐藏自定义键盘
问题:自定义键盘本身也属于布局的一部分,visible后自定义键盘外区域不能操作,不符合项目的图表操作需求
2.第1个popupwindow弹出EditText布局,点击EditText弹出第2个带有自定义键盘的popupwindow
问题:popupwindow没有update移动动画,难以做到2个popupwindow同步移动
3.只有一个popupwindow,自定义键盘先是gone,点击EditText再让自定义键盘visible,加上gone动画效果

二、PopupWindow和自定义键盘遇到的问题
1.popupWindow.showAtLocation(rootview, Gravity.TOP, 0, 1850);
第一个参数需要是popupwindow所依附的父视图中的任意控件,在做第2种情况调研时,传入的是第1个popupwindow中的EditText,报WindowManager$BadTokenException,原因是popupwindow是动态创建的,不能作为showAtLocation()方法的显示位置
2.keyboardWindow.setBackgroundDrawable(new ColorDrawable());
如果不设置PopupWindow的背景,无论是点击外部区域还是Back键都无法dismiss弹框
原因:
public void showAtLocatio

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值