我的应用程序允许更改方向,它还允许在更改方向时通过将AndroidManifest中的活动行更改为此来继续应用程序:
<activity android:name="com.cynetstudios.frequencyselector.main" android:configChanges="orientation|screenSize">
问题:
但是,启动我的应用程序可以在两种状态下完成:
垂直
应用程序正常,默认填充,没有问题。 Vertical Start,Change to Horizontal
水平
应用程序在侧面有大的填充,因此被转移到垂直布局。 Horizontal Start,Change to Vertical
我做了一些研究:
提到添加我已经完成的configChange="Orientation"
,还要添加到我的主类中:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
this.recreate();
}
这确实解决了问题,但重新创建了旧的问题,重新启动/重新启动了应用程序本身,这会杀死任何当前的任务/线程。
有关此填充问题的任何建议吗?
答案 0 :(得分:1)
为水平方向和平板电脑创建不同的layout.xml文件
答案 1 :(得分:1)
创建一个名为layout-land的单独目录,并为横向创建单独的布局,并将它们保存在layout-land目录中。
答案 2 :(得分:0)
如果在两个方向的两侧都需要相同的填充,则为父布局定义一些填充值。所以它会在状态上保持相同的填充。
答案 3 :(得分:0)
正如其他用户所建议的那样,创建layout-land
文件夹并将我的活动布局xml文件复制到这个新的layout-land
文件夹中有助于解决我的问题
原因是由于我的dimens.xml中发生dp
更改。水平xml定义了64pd
的水平边距,而我将其定义为16dp
。
将此更改为16dp
解决了我的问题,
在我的情况下,onConfigurationChanged()
也没有必要。