"adjustResize" Android

4

我有一个应用程序,通过使用以下方式运行全屏:

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

由于布局的原因,android:windowSoftInputMode="adjustResize"不能正常工作,即它不能进行调整大小。
有没有什么办法解决这个问题?
2个回答

4
FYI:这是现有的AOSP(Android开源项目)漏洞:http://code.google.com/p/android/issues/detail?id=5497 理想情况下,应该修复此漏洞,但在此之前,以下是一些解决方法。由于我不知道这适用于哪种应用场景,因此可能并不适用。
  1. 根据我对先前答案的最佳解释,设计您的布局使其与adjustPan正常工作。我能想到的第一件事是没有任何标头或脚注,当键盘弹出时,它们都应消失。
  2. 不要在可以接受文本输入的布局中使用FLAG_FULLSCREEN。可能显示状态栏来接受输入并不是什么大问题。但是,对于查看带有嵌入式输入字段(例如Web浏览器)的内容并具有全屏模式的某些内容,这根本没有任何意义。
  3. 实现自己的adjustResize行为。我不确定这会起多大作用,但可能您可以编写一个子类来跟踪键盘何时显示或接管显示和隐藏键盘的调用(重写至少onKeyUp和onTouchEvent)。显示时,调整您的内容-可能是软输入高度的最佳猜测,因为用户可以安装不同的软输入方法。我认为这将是技术上困难且没有极端需要就不合理尝试。

我不理解这个回答被踩的原因。也许踩的人想要一些关于adjustResize和adjustPan的背景:http://developer.android.com/guide/topics/manifest/activity-element.html#wsoft?请注意,adjustUnspecified是默认设置。只要布局能够调整到新的尺寸(即屏幕减去键盘),adjustResize就是最好的行为。还要注意,在我最初回答两年后,有人在链接的错误线程上发布了#3的实现:https://dev59.com/XGs05IYBdhLWcg3wJurp#19494006 - Stan Kurdziel

2

你可以尝试使用android:windowSoftInputMode="adjustPan",而不是android:windowSoftInputMode="adjustResize"


2
如果adjustPan正常工作,它将导致您的某些活动被推出屏幕以为键盘腾出空间。这在某些情况下可能很好用,但在其他情况下可能完全不可接受。 - Stan Kurdziel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接