我正在android studio上创建一个应用程序。该应用程序工作正常但每当我旋转屏幕时,布局都在变化,屏幕上的项目会重叠,有时应用程序会重新启动。 有哪些可能的解决方案?阻止屏幕旋转是一个很好的选择吗?请帮忙。提前谢谢。
答案 0 :(得分:0)
如果您在键盘中遇到任何问题,则需要在AndroidMenifest.xml中设置方向。使用keyboardHidden属性。
答案 1 :(得分:0)
您可以将活动的屏幕方向设置为纵向,这样您的活动将永远不会旋转,但如果您想支持横向版本,那么您还必须创建横向布局并将布局放在layout-landscape文件夹中,但是你也必须处理你的数据。
选择是你的
答案 2 :(得分:0)
您可以阻止在方向更改时重新创建活动。只需将它添加到Manifest文件中的活动标记中即可。
<activity
android:name=".YOUR_ACTIVITY_NAME"
android:configChanges="keyboardHidden|orientation|screenSize" />
答案 3 :(得分:0)
Android Activites在您旋转设备时从头开始。所以你的活动生命周期方法就像
onCreate(),onStart(),onResume()
将再次被召唤。 有两种可能的解决方案,第一种是Rob在这里。
<activity
android:name=".ACTIVITY"
android:configChanges="keyboardHidden|orientation|screenSize" />
这将自行处理方向更改。
另一种解决方案是在不同的布局文件夹中创建不同的布局类型。文件夹将是
layout-land,layout-sw600dp-land(适用于7英寸平板电脑)和layout-sw720dp-land(适用于10英寸平板电脑)
因此,当您旋转设备时,系统会自动对此文件夹中的布局进行充气。会有一些情况,例如您希望保留活动的当前状态,为此请参阅此link
答案 4 :(得分:0)
不,防止定位是风景是不一个好的解决方案。许多平板电脑仅限横向播放,您的应用无法在这些平板电脑上正确显示。
正确的做法是在onSaveInstanceState()
中保存您的状态,然后在重新创建活动时在onCreate()
中读取它(savedInstanceState
变量不为空)。为此,您要保存的数据必须为Serializable
或Parcelable
。
如果您想要保存不可序列化的数据,或者您在后台运行某些内容,则可以Fragment
使用setRetainInstance(true);
而不使用布局。请参阅this链接。
视图将再次创建,是的,但您将设置保存的值,使其看起来与旋转前一样。