“adjustResize”Android

时间:2011-06-18 10:22:02

标签: android mobile

我有一个使用全屏运行的应用程序:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

由于这种布局,android:windowSoftInputMode="adjustResize"无法正常工作,即它不会调整大小。

有没有办法克服这个问题?

2 个答案:

答案 0 :(得分:5)

仅供参考:这是现有的AOSP(Android开源项目)错误:http://code.google.com/p/android/issues/detail?id=5497

理想情况下,这个错误会被修复,但在此之前,我们会想到如何处理它。由于我不知道这与哪种应用场景有关,因此这些可能不太适用。

  1. 与我对上一个答案的最佳解释一致,设计你的布局,以便adjustPan可以正常工作。我能想到的第一件事就是在键盘启动时没有任何页眉或页脚可以保留在屏幕上。

  2. 不要将FLAG_FULLSCREEN用于可以接受文本输入的布局。可能在接受输入时显示状态栏不是什么大问题。但是,对于使用具有全屏模式的嵌入式输入字段(如Web浏览器)查看内容的内容,这根本没有多大意义。

  3. 实施自己的adjustResize式行为。我不确定这会有多好用,但是你可以编写一个子类来导致显示键盘(例如:EditText),你可以跟踪键盘显示的时间,也可以接管调用show和隐藏键盘(至少覆盖onKeyUp和onTouchEvent)。显示时,调整内容大小 - 可能最好猜测软输入高度,因为用户可以安装不同的软输入方法。我相信这在技术上是困难的,并且在没有极端需要的情况下尝试是不合理的。

答案 1 :(得分:3)

您可以尝试android:windowSoftInputMode="adjustResize"

而不是android:windowSoftInputMode="adjustPan"