Android监听输入法弹窗和关闭的实现方法
用过ios的都知道ios上输入法关闭的同时会自动关闭输入框,那么在android上如何实现监听输入法弹出和关闭呢?本篇文章就为你提供了一种可靠的实现方式。
        演示效果视频地址
        首先在androidmanifest中配置
[Java] 查看源文件 复制代码
?
1
android:windowsoftinputmode="adjustresize"
        这样每次输入法弹出和关闭都会重新计算高度实现把布局顶上去的效果
        然后我们要自定义一个布局,监听布局大小变化
[Java] 查看源文件 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public class checksoftinputlayout extends framelayout {
private onresizelistener monresizelistener;
public checksoftinputlayout(context context) {
super(context);
}
public checksoftinputlayout(context context, attributeset attrs) {
super(context, attires);
}
public checksoftinputlayout(context context, attributeset attrs, int
defstyleattr) {
super(context, attrs, defstyleattr);
}
@targetapi(21)
public checksoftinputlayout(context context, attributeset attrs, int
defstyleattr, int defstyleres) {
super(context, attrs, defstyleattr, defstyleres);
}
@override
protected void onsizechanged(int w, int h, int oldw, int oldh) {
sizechanged(w, h, oldw, old);
if (monresizelistener != null) {
size(w, h, oldw, old);
}
}
public void setonresizelistener(onresizelistener listener) {
sizelistener = listener;
}
public interface onresizelistener {
void onresize(int w, int h, int oldw, int old);
}
}
        然后把上面的自定义布局作为跟布局放到你需要的activity中去,然后在activity中绑定监听事件
[Java] 查看源文件 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
mrootlayout.setonresizelistener(this);
@override
public void onresize(int w, int h, int oldw, int oldh) {
//如果第一次初始化
if (oldh == 0) {
return;
}
//如果用户横竖屏转换
if (w != oldw) {
return;
}
if 自动弹窗代码(h < oldh) {
//输入法弹出
} else if (h > oldh) {
//输入法关闭
setcommentviewenabled(false, false);
}
int distance = h - old;
default().post(new inputmethodchangeevent(distance,mcurrentimageid));
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。