фрагмент в макете, не заполняющий весь экран при изменении конфигурации

Вопрос:

У меня есть первый макет с фрагментом карты, который полностью заполняет весь экран при изменении конфигурации (ориентации).

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

Заранее спасибо! Я действительно был бы признателен за любую помощь.

EDIT: я использую android:configChanges="screenSize|orientation" в первой активности в моем манифесте.

Ответ №1

Я вижу, что макет SecondActivity имеет match_parent для обоих измерений, поэтому, когда вы запускаете SecondActivity, MainActivity отправляет в задний стек и останавливается. См. Эту ссылку для получения дополнительной информации:

https://developer.android.com/guide/components/tasks-and-back-stack.html: “Когда действие прекращается, система сохраняет текущее состояние своего пользовательского интерфейса”. Поэтому, когда конфигурация изменяется, как и ориентация, обновляется только SecondActivity, поскольку она является единственной, сфокусированной и имеющей всю видимость экрана.

Попробуйте установить макет SecondActivity для wrap_content для обоих размеров (ширина и высота), поэтому макет MainActivity будет частично скрыт, и система Android обновит конфигурацию, когда потребуется, даже если сфокусирована на SecondActivity.

Также см. Https://developer.android.com/guide/components/activities.html. “Приостановлено: другое действие находится на переднем плане и имеет фокус, но этот все еще видимый. То есть другое действие видно поверх этого, и эта активность частично прозрачна или не покрывает весь экран. (объект Activity сохраняется в памяти, он сохраняет всю информацию о состоянии и членах и остается прикрепленным к диспетчеру окон), но может быть убит системой в ситуациях с чрезвычайно низкой памятью “. “Остановлено: активность полностью закрыта другим действием (активность теперь находится в” фоне “). Остановленное действие также остается в живых (объект Activity сохраняется в памяти, он поддерживает всю информацию о состоянии и членах, но не прикрепленный к оконному менеджеру). Однако он больше не виден пользователю, и он может быть убит системой, когда требуется память в другом месте “.

Таким образом, ключ не использует “match parent” в макете SecondActivity и прозрачном фоне по MainActivity.

Пожалуйста, попробуйте и дайте мне знать, как все идет! Благодарю!

Оцените статью
TechArks.Ru
Добавить комментарий