Android Wear: макет неправильно отображается в эмуляторе

Я разрабатываю приложение для смарт-часов Android. Начальный экран выглядит нормально. Но когда я перехожу к следующему экрану, верхняя часть всплывает с названием проекта примерно так. На изображении ниже Watch — это название проекта.

введите здесь описание изображения

Я хочу видеть весь экран вместо пробела, который содержит название проекта. Кто-нибудь знает, как решить эту проблему и почему она появляется?

Мой XML-файл

<?xml version="1.0" encoding="utf-8"?>
<android.support.wear.widget.BoxInsetLayout 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:orientation="vertical"
    tools:deviceIds="wear">

    <LinearLayout
        android:id="@+id/mainContainer"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:background="@color/black"
        android:weightSum="1"
        tools:ignore="UselessParent"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true">

        <LinearLayout
            android:id="@+id/sign_up_top_bar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:orientation="horizontal"
            android:layout_marginTop="15dp">

            <TextView
                android:id="@+id/textview"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:padding="5dp"
                android:textAlignment="center"
                android:textSize="18sp"
                android:text="@string/text"
                android:background="@color/black"
                android:textColor="@color/white"
                android:fontFamily="Century-Gothic.ttf" />

            <ImageView
                android:id="@+id/imageView1"
                android:layout_width="18dp"
                android:layout_height="19dp"
                android:layout_toRightOf="@+id/text"
                android:src="@drawable/fingerprint" />

        </LinearLayout>

        <Button
            android:layout_marginTop="10dp"
            android:id="@+id/button"
            android:background ="@drawable/roundedbutton"
            android:text="@string/button_text"
            android:layout_width="108dp"
            android:textAlignment="center"
            android:drawablePadding="20dp"
            android:layout_gravity="center"
            android:textColor="@color/white"
            android:layout_height="75dp"
            android:layout_weight="0.34" />


    </LinearLayout>

    </android.support.wear.widget.BoxInsetLayout>

person Sarvesh Kulkarni    schedule 11.08.2017    source источник
comment
Какую тему вы используете для своей деятельности? Вам может понадобиться один с NoTitleBar.   -  person TofferJ    schedule 11.08.2017
comment
Я использую Theme.AppCompat.Light.   -  person Sarvesh Kulkarni    schedule 12.08.2017
comment
Исходя из этого thread, существует много проблем с раздуванием макетов. которые вызваны неправильным использованием WatchViewStub. Одна из распространенных проблем возникает, когда вы регистрируете прослушиватель для вставок наблюдения, чтобы вы могли проверить, является ли он круглым или квадратным внутри вашего обработчика onApplyWindowInsets. Дополнительная ссылка: stackoverflow.com/ вопросы/28754782/   -  person abielita    schedule 12.08.2017
comment
Привет Абиелита. Я не использую WatchViewStub. Я использую Boxinsetlayout.   -  person Sarvesh Kulkarni    schedule 14.08.2017


Ответы (2)


Используйте BoxInsetLayout для основного макета:

Этот класс применяет необходимые вставки окна в зависимости от формы экрана и позволяет легко выравнивать виды по центру или по краям экрана.

И я настоятельно рекомендую вам прочитать этот учебник.

Редактировать 2:

Вам нужно использовать:

android.support.wearable.view.BoxInsetLayout

нет:

android.support.wear.widget.BoxInsetLayout

и добавляем в mainContainer:

app:layout_box="all"

<android.support.wearable.view.BoxInsetLayout 
    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:orientation="vertical"
    tools:deviceIds="wear">

<LinearLayout
    app:layout_box="all"
    android:id="@+id/mainContainer"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@color/black"
    android:weightSum="1"
    tools:ignore="UselessParent"
    android:layout_alignParentTop="true"
    android:layout_alignParentStart="true">
person Obsthändler    schedule 11.08.2017
comment
Я изменил свой макет на BoxInsetLayout. Он по-прежнему отображается таким же образом. - person Sarvesh Kulkarni; 11.08.2017
comment
Покажи мне свой файл макета xml - person Obsthändler; 11.08.2017
comment
Я забыл сказать вам, чтобы добавить эту строку. теперь это будет работать. - person Obsthändler; 12.08.2017
comment
Он по-прежнему отображается таким же образом даже после добавления этой строки: | - person Sarvesh Kulkarni; 14.08.2017
comment
Первый экран, на котором есть данные для входа, я использовал тот же макет. Это работает нормально. Я не знаю, почему он не работает для второго экрана, - person Sarvesh Kulkarni; 14.08.2017
comment
Я отредактировал ответ, попробуйте сейчас и скажите, работает ли он: D - person Obsthändler; 14.08.2017
comment
Есть альтернатива, если нужно, но я думаю, что это сработает сейчас. - person Obsthändler; 14.08.2017
comment
проверьте, добавили ли вы app:layout_box=all в linearLayout - person Obsthändler; 14.08.2017
comment
Давайте продолжим обсуждение в чате. - person Obsthändler; 14.08.2017
comment
Да. Я скопировал то, что вы написали, прямо в свой макет. - person Sarvesh Kulkarni; 14.08.2017
comment
Ответ был прост. Я изменил свою тему с Theme.AppCompat.Light на Theme.AppCompat.Light.NoActionBar в файле манифеста. Панель имени программы исчезла - person Sarvesh Kulkarni; 14.08.2017
comment
Спасибо за помощь @Obsthandler - person Sarvesh Kulkarni; 14.08.2017

Ответ на вопрос был прост. Я понял через день. Я изменил свою тему с Theme.AppCompat.Light на Theme.AppCompat.Light.NoActionBar в файле манифеста. Строка имени программы исчезла.

person Sarvesh Kulkarni    schedule 14.08.2017
comment
Я думаю, что стандартно использовать устройство по умолчанию с износом Android. Нет необходимости использовать appCompat. ‹имя стиля=Theme.main parent=@android:style/Theme.DeviceDefault› - person Craig J; 19.08.2017