布局背景中的片段在配置更改时未填满整个屏幕

时间:2014-07-23 16:30:27

标签: android android-layout android-fragments

我有第一个带有地图片段的布局,它可以完美地填充整个屏幕的配置更改(方向)。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.project.MainActivity" >

    <fragment
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.SupportMapFragment" />

</RelativeLayout>

问题是当第一个布局以透明方式进入背景时。带有微调器的新第二个布局出现在第一个布局上,但是当方向改变时,地图片段不会填满整个屏幕。它保持宽度。带有微调器的第二个布局填满了所有屏幕。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/transparent"
    android:orientation="vertical" 
    tools:context="com.example.project.SecondActivity" >

    <Spinner
        android:id="@+id/spinner"
        android:drawSelectorOnTop="true"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

先谢谢了!我真的很感激任何帮助。

编辑:我在清单中的第一个活动中使用android:configChanges="screenSize|orientation"

1 个答案:

答案 0 :(得分:0)

我看到SecondActivity的布局对于两个维度都有match_parent,因此当您启动SecondActivity时,MainActivity将发送到后台堆栈并停止。有关更多信息,请参阅此链接:

https://developer.android.com/guide/components/tasks-and-back-stack.html: “当活动停止时,系统会保留其用户界面的当前状态。”因此,当配置发生变化时(如方向),只更新SecondActivity,因为它是唯一被聚焦并具有整个屏幕可见性的。

尝试将SecondActivity布局设置为两个维度(宽度和高度)的wrap_content,因此MainActivity布局将被部分隐藏,并且即使重点关注SecondActivity,Android系统也会在需要时刷新配置。

另见https://developer.android.com/guide/components/activities.html。 “顿了顿: 另一项活动是在前景并具有焦点,但这一活动仍然可见。也就是说,另一个活动在这个活动的顶部可见,并且该活动部分透明或不覆盖整个屏幕。暂停的活动完全处于活动状态(Activity对象保留在内存中,它保留所有状态和成员信息,并保持附加到窗口管理器),但在极低的内存情况下可被系统杀死。 “停止: 活动完全被另一个活动遮挡(活动现在在“背景”中)。已停止的活动仍处于活动状态(活动对象保留在内存中,它维护所有状态和成员信息,但未附加到窗口管理器)。但是,它不再对用户可见,并且当其他地方需要内存时,它可能会被系统杀死。“

所以关键是不要在SecondActivity布局中使用“匹配父”,而在MainActivity上使用透明背景。

请尝试一下,让我知道它是怎么回事!谢谢!