出现Android键盘时Unity调整屏幕大小
Posted
技术标签:
【中文标题】出现Android键盘时Unity调整屏幕大小【英文标题】:Unity resize screen when android keyboard appears 【发布时间】:2017-07-25 06:50:42 【问题描述】:我实际上是在为具有统一性的 android 设备创建一个简单的游戏。
在游戏中,玩家必须写一个数字。
所以我使用统一 UI 中的输入字段对象。
当我在我的设备上使用它时,我得到了一个奇怪的东西;
当安卓键盘出现时,统一调整屏幕大小。
当键盘消失时,unity 会再次将屏幕大小调整为正常模式,但是当它这样做时,它绝对是丑陋的! (我在这个过程中看到了一些奇怪的人工制品(以毫秒为单位),但它非常难看)。
我想知道我是否可以命令统一不调整任何大小,因此无论有没有键盘,视图都保持不变?
非常感谢! :)
【问题讨论】:
我可以告诉你这是完全有可能的,但我不记得怎么做了。我回家后会检查我的项目,如果到那时其他人还没有回答,我会回复。 还是什么都没有? :// 【参考方案1】:很抱歉,我花了几天时间才回复,但我之前在源文件中找不到它,因为我找错地方了。你马上就会明白为什么。以下是您需要做的:
-
假设您的项目中没有自定义 AndroidManifest.xml(如果有,请跳至 4),构建您的游戏。
打开项目的文件夹。转到 Temp/StagingArea 并在您选择的编辑器中打开 AndroidManifest.xml。复制内容。
在 Unity 中,在 Assets 文件夹的根目录中创建一个“插件”文件夹。在里面,创建一个“Android”文件夹。在此文件夹中,创建一个名为 AndroidManifest.xml 的新文件。将您从第 2 步中获取的文件的内容粘贴到其中。
在您的 AndroidManifest.xml 文件中,在活动标记内,添加此自定义属性:android:windowSoftInputMode="adjustNothing",因此最终标记将如下所示:
<activity android:windowSoftInputMode="adjustNothing" android:name="com.unity3d.player.UnityPlayerActivity" android:label="@string/app_name" android:screenOrientation="fullSensor" android:launchMode="singleTask" android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
</intent-filter>
<meta-data android:name="unityplayer.UnityActivity" android:value="true" />
</activity>
执行此操作后,屏幕应在键盘出现后保留其内容。
注意:请不要使用我在此处提供的代码。按照步骤为您的 Unity 版本获取正确的基本 AndroidManifest.xml 文件并编辑该文件。还要确保在每次将 Unity 更新到较新版本时更新清单文件。他们可以随时更改该文件,并且不使用最新版本会在您的应用程序中产生不良且难以跟踪的副作用。
【讨论】:
很高兴知道!请使用绿色复选标记将此标记为已接受的答案,以让其他人知道该问题也已得到解答。以上是关于出现Android键盘时Unity调整屏幕大小的主要内容,如果未能解决你的问题,请参考以下文章
显示键盘时防止 DialogFragment 调整大小/折叠