Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 布局背景中的片段在配置更改时未填充整个屏幕_Android_Android Layout_Android Fragments - Fatal编程技术网

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

Android 布局背景中的片段在配置更改时未填充整个屏幕,android,android-layout,android-fragments,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"

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

<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”

我看到SecondActivity的布局与两个维度的父级都匹配,因此当启动SecondActivity时,MainActivity会被发送到后堆栈并停止。有关更多信息,请参阅此链接:

: “当一个活动停止时,系统将保留其用户界面的当前状态。”因此,当配置发生变化(如方向)时,只更新第二个活动,因为它是唯一被聚焦的活动,并且具有整个屏幕的可见性

尝试将SecondActivity布局设置为包装两个维度(宽度和高度)的内容,这样MainActivity布局将部分隐藏,Android系统将在需要时刷新配置,即使SecondActivity处于焦点状态

也看到这个。 “暂停: 另一个活动位于前台并具有焦点,但此活动仍然可见。也就是说,另一个活动位于此活动之上,并且该活动部分透明或不覆盖整个屏幕。暂停的活动完全处于活动状态(活动对象保留在内存中,它维护所有状态和成员信息,并保持与窗口管理器的连接),但在内存极低的情况下,系统可能会将其终止。” “停止: 该活动被另一个活动完全遮挡(该活动现在处于“后台”)。已停止的活动也仍然处于活动状态(该活动对象保留在内存中,它维护所有状态和成员信息,但未附加到窗口管理器)。但是,用户不再可以看到它,当其他地方需要内存时,系统可能会将其删除。”

因此,关键是不要在SecondActivity布局中使用“匹配父级”,也不要在MainActivity上使用透明背景


请尝试一下,让我知道它是如何运行的!谢谢!

谢谢你的详细回答!它也不起作用。事实上,我也在使用自定义主题来获取透明度,因为
android:background=“@android:color/transparent”
显然什么都不做。我想实现这一点。我想看看微调器(第二个布局)仍然可以看到下面的地图片段。我明白了,但问题是当我改变方向时,就像我说的。也许解决方案是只使用一个活动和/或一个布局。是的,这可能会起作用,你可以尝试使用MainActivity和一个带有透明背景的自定义弹出窗口,它不会占据所有屏幕和屏幕我把主活动连接到窗口管理器。谢谢!