活动

时间:2016-06-20 11:46:48

标签: java android android-layout

我的应用程序允许更改方向,它还允许在更改方向时通过将AndroidManifest中的活动行更改为此来继续应用程序:

<activity android:name="com.cynetstudios.frequencyselector.main" android:configChanges="orientation|screenSize">

问题:

但是,启动我的应用程序可以在两种状态下完成:

我做了一些研究:

提到添加我已经完成的configChange="Orientation",还要添加到我的主类中:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    this.recreate();
}

这确实解决了问题,但重新创建了旧的问题,重新启动/重新启动了应用程序本身,这会杀死任何当前的任务/线程。

有关此填充问题的任何建议吗?

4 个答案:

答案 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()也没有必要。