Jacksgong / JKeyboardPanelSwitch

For resolve the layout conflict when keybord & panel are switching (Android键盘面板冲突 布局闪动处理方案)
Apache License 2.0
4.18k stars 685 forks source link

问一下使用listview时,并且输入框高度改变时回滚到最底部,怎么实现 #36

Closed lambor closed 8 years ago

lambor commented 8 years ago

如题,如果键盘的高度改变时,输入框的高度也改变,这时需要listview内容回滚到最底部。

阅读源码发现只有键盘showing的监听事件KeyboardUtil.OnKeyboardShowingListener,而且KeyboardUtil.KeyboardStatusListener中只针对Keyboard高度"特别的"改变才进行KPSwitchPanelLinearLayout.refreshHeight

可以添加一个类似于OnKBHeightChangeListener吗?或者还有什么简单的方法?

Jacksgong commented 8 years ago

KeyboardUtil.KeyboardStatusListener 暴露的接口就是:软键盘的显示状态。


内部不是对Keyboard高度"特别的"改进才进行。而是对布局的变化,而布局的变化不一定是键盘显示隐藏或显示导致的。

lambor commented 8 years ago

但是是 private static class KeyboardStatusListener 是不是需要自己修改一下?谢谢啦

Jacksgong commented 8 years ago

哦。我明白了,你可以看看这个,对外开放的是这个: KeyboardUtil.OnKeyboardShowingListener

Jacksgong commented 8 years ago

KeyboardUtil.attach时可以传入。

lambor commented 8 years ago

恩,如果能listen到keyboard高度变化就更好了,这个库对我帮助很大,十分感谢

Jacksgong commented 8 years ago

恩。你可以覆写布局 XXXPanelXXXLalyout (如KPSwitchPanelLinearLayout),里面的refreshHeight(panelHeight),默认就是在键盘高度有改变的时候传回的。

不过要注意的是: refreshHeight并不能体现键盘是否隐藏或者显示,只有在键盘的高度有变化的时候回调。并且是在 ViewTreeObserver.OnGlobalLayoutListener#onGlobalLayout中回调回来的。

Jacksgong commented 8 years ago

通常情况下,你也可以通过 KeyboardUtil#getKeyboardHeight(Context) 中获取最新的键盘高度计算结果。