Компоновка и рисование не по центру - PullRequest
1 голос
/ 13 января 2020

У меня есть два макета для моего экрана 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.

Итак, эти файлы в основном находятся в центре значка. на пустом экране, без какого-либо другого стиля. Я ожидаю, что они оба будут идеально отцентрированы. Однако в действительности они выглядят так:

enter image description here

Первое изображение - это drawable, а второе - layout. Как видите, второй, построенный с LinearLayout, расположен немного выше. Поскольку эти экраны отображаются один за другим, создается впечатление, что значок перемещается вверх.

Я попытался добавить поле или отступ в ImageView, но он не отображается одинаково на другом устройстве. Также я попытался использовать gravity и layout_gravity с различными параметрами и комбинациями, но они либо не центрируют их точно так же. Я думал, что строка состояния может вызвать эту проблему, но строка состояния всегда есть, и приложение всегда полноэкранное. У вас есть идеи, почему может возникнуть такая проблема с центрированием? Заранее спасибо.

1 Ответ

0 голосов
/ 13 января 2020

Я думаю, это происходит потому, что фон деятельности игнорирует нижнее смещение навигации. Кажется, с этим поведением проблем нет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...