razerdp / BasePopup

Android下打造通用便捷的PopupWindow弹窗库
https://github.com/razerdp/BasePopup
Apache License 2.0
5.2k stars 758 forks source link

横屏下,键盘不会顶起Popup #226

Closed JasonLian2020 closed 4 years ago

JasonLian2020 commented 5 years ago

具体Demo是SlideFromBottomInputPopup这个类

popup_slide_from_bottom_with_input.xml里面EditText增加了android:imeOptions="flagNoExtractUi",不然键盘会全屏显示

<EditText
        android:id="@+id/ed_input"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#DCDCDC"
        android:hint="请输入"
        android:minEms="8"
        android:padding="16dp"
        android:imeOptions="flagNoExtractUi"
        android:textSize="14sp"/>

@razerdp

JasonLian2020 commented 5 years ago

Demo里面竖屏是没问题的。

razerdp commented 5 years ago

横屏是故意不去适配的~

因为多数情况下,横屏的时候顶起来PopupWindow根本不够空间显示,在游戏中的话横屏也是专门给一个View进行输入,而且这个输入一般在顶部。

所以BasePopup对横屏键盘适配是屏蔽的。

如果实在有需要,我下个版本可以提供一个参数强制适配~

JasonLian2020 commented 5 years ago

横屏是故意不去适配的~

因为多数情况下,横屏的时候顶起来PopupWindow根本不够空间显示,在游戏中的话横屏也是专门给一个View进行输入,而且这个输入一般在顶部。

所以BasePopup对横屏键盘适配是屏蔽的。

如果实在有需要,我下个版本可以提供一个参数强制适配~

有这样的需求,如果可以控制顶起或不顶起最好,感谢作者~

razerdp commented 5 years ago

嗯,下一个版本我提供一个参数允许强制适配吧~

JasonLian2020 commented 5 years ago

如果我现在需要在横屏下顶起Popup,改源码哪里可以实现,可以给下相关代码吗~

razerdp commented 5 years ago

PopupDecorViewProxy.java#L953

JasonLian2020 commented 5 years ago

PopupDecorViewProxy.java#L953

感谢~

razerdp commented 5 years ago

下一个版本提供 setAdjustInputMode()方法,传参加入BasePopupWindow.FLAG_KEYBOARD_FORCE_ADJUST即可强制适配。

因为有时候横屏默认不需要android:imeOptions="flagNoExtractUi",所以这个参数并不是默认配置的。

相关测试用例已经添加到Demo中,请留意Demo~ device-2019-09-26-145222

JasonLian2020 commented 5 years ago

下一个版本提供 setAdjustInputMode()方法,传参加入BasePopupWindow.FLAG_KEYBOARD_FORCE_ADJUST即可强制适配。

因为有时候横屏默认不需要android:imeOptions="flagNoExtractUi",所以这个参数并不是默认配置的。

相关测试用例已经添加到Demo中,请留意Demo~ device-2019-09-26-145222

Woooooooo~太棒了!

YourException commented 2 years ago

请问:在横屏状态下PopupWindow的输入法怎么适配,添加setKeyboardAdaptionMode(BasePopupWindow.FLAG_KEYBOARD_FORCE_ADJUST)后,输入法是直接把整个PopupWindow顶起来,而不是位于输入框下方。

razerdp commented 2 years ago

请问:在横屏状态下PopupWindow的输入法怎么适配,添加setKeyboardAdaptionMode(BasePopupWindow.FLAG_KEYBOARD_FORCE_ADJUST)后,输入法是直接把整个PopupWindow顶起来,而不是位于输入框下方。

跟竖屏一样的操作flag即可。如果整个顶起来了你可以查看一下Layoutinspector,也许是pop高度超过了屏幕,那么自然没法适配了。