У меня есть два макета для моего экрана spla sh, которые в основном состоят из значка, центрированного на экране.
Одна из них - drawable/launch_screen.xml
. Этот используется для AppTheme
.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<item android:drawable="@android:color/black" />
<item>
<bitmap
android:gravity="center"
android:src="@android:drawable/ic_menu_camera" />
</item>
</layer-list>
. Я использую этот файл для своей темы приложения следующим образом:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowBackground">@drawable/launch_screen</item>
</style>
А другой - layout/launch_screen.xml
. Это используется библиотекой react-native-splash-screen
.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/black"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/ic_menu_camera" />
</LinearLayout>
Если вам нужны подробности, я создал механизм экрана spla sh, следуя этому руководству . Как только приложение открывается, AppTheme
показывает drawable/launch_screen
в качестве фона, затем появляется экран Spla sh и отображается layout/launch_screen
.
Итак, эти файлы в основном находятся в центре значка. на пустом экране, без какого-либо другого стиля. Я ожидаю, что они оба будут идеально отцентрированы. Однако в действительности они выглядят так:
Первое изображение - это drawable
, а второе - layout
. Как видите, второй, построенный с LinearLayout
, расположен немного выше. Поскольку эти экраны отображаются один за другим, создается впечатление, что значок перемещается вверх.
Я попытался добавить поле или отступ в ImageView, но он не отображается одинаково на другом устройстве. Также я попытался использовать gravity
и layout_gravity
с различными параметрами и комбинациями, но они либо не центрируют их точно так же. Я думал, что строка состояния может вызвать эту проблему, но строка состояния всегда есть, и приложение всегда полноэкранное. У вас есть идеи, почему может возникнуть такая проблема с центрированием? Заранее спасибо.