вид снизу вне экрана, как это исправить - PullRequest
0 голосов
/ 31 октября 2019

В настоящее время я создаю макет чата, который корректно отображается в Android Studio, но при работе на реальных устройствах он выглядит иначе. Любой совет, как мне решить проблему с отсутствующим экраном?

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

Вот макет xml длячат:

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        tools:ignote="MergeRootFrame">

        <androidx.appcompat.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:menu="@menu/menu_private_chat"
            app:navigationIcon="@drawable/ic_arrow_back_white_24dp"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/messages"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_marginStart="8dp"
            android:layout_marginTop="8dp"
            android:layout_marginEnd="8dp"
            android:layout_marginBottom="8dp"
            app:layout_constraintBottom_toTopOf="@+id/enter_messages"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/toolbar"
            tools:listitem="@layout/animal_list_item" />

        <EditText
            android:id="@+id/enter_messages"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="8dp"
            android:layout_marginEnd="8dp"
            android:layout_marginBottom="8dp"
            app:layout_constraintStart_toEndOf="@id/messages"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toStartOf="@+id/button"
            app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintStart_toStartOf="parent" />

        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="8dp"
            android:text="Send"
            app:layout_constraintBottom_toBottomOf="@+id/enter_messages"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintStart_toEndOf="@id/enter_messages"
            app:layout_constraintTop_toTopOf="@id/enter_messages" />


    </androidx.constraintlayout.widget.ConstraintLayout>


</layout>

Вот скриншот для макета:

Макет в Android Studio Предварительный просмотр

Макет работает в реальном режимеУстройства

/ ** ОБНОВЛЕНИЕ ** / Но когда клавиатура поднята и после ввода текста я сфокусировался, раскладка снова становится нормальной

Ответы [ 4 ]

1 голос
/ 31 октября 2019

Хорошо ... Я запускаю этот xml самостоятельно, и он выглядит нормально, при предварительном просмотре, на эмуляторах и на реальном устройстве, но я предполагаю, что если вы используете этот макет в качестве фрагмента или любой другой макет включения, android:fitsSystemWindows="true" может привестина такой вопрос.

0 голосов
/ 31 октября 2019

попытаться удалить смещение

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:ignote="MergeRootFrame">

    <androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:menu="@menu/menu_private_chat"
        app:navigationIcon="@drawable/ic_arrow_back_white_24dp"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/messages"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginBottom="8dp"
        app:layout_constraintBottom_toTopOf="@+id/enter_messages"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/toolbar"
        tools:listitem="@layout/animal_list_item" />

    <EditText
        android:id="@+id/enter_messages"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginBottom="8dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/button"
        app:layout_constraintStart_toEndOf="@id/messages"
        app:layout_constraintStart_toStartOf="parent" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="8dp"
        android:text="Send"
        app:layout_constraintBottom_toBottomOf="@+id/enter_messages"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@id/enter_messages"
        app:layout_constraintTop_toTopOf="@id/enter_messages" />


</androidx.constraintlayout.widget.ConstraintLayout>
0 голосов
/ 31 октября 2019

Вместо использования ConstraintLayout используйте RelativeLayout, как показано ниже: -

<RelativeLayout 
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  xmlns:tools="http://schemas.android.com/tools">

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:ignote="MergeRootFrame">

    <androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

     <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/messages"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginBottom="8dp"
        />

     <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="@dimen/dp_22">
     <EditText
        android:id="@+id/enter_messages"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@+id/button"
        android:layout_toStartOf="@+id/button" />

     <Button
        android:layout_alignParentRight="true"
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="8dp"
        android:text="Send"
        android:layout_marginRight="8dp"
        android:layout_alignParentEnd="true" />

     </RelativeLayout>
 </RelativeLayout>


</layout>

попробуйте сделать это следующим образом, зафиксировав EditText и Button внизу, используя RelativeLayout.

enter image description here

0 голосов
/ 31 октября 2019

Я использовал RelativeLayout и поместил EditText и Button в один RelativeLayout. Затем выровняйте их по нижней части родительского макета.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:menu="@menu/menu_private_chat"
        app:navigationIcon="@drawable/ic_arrow_back_white_24dp"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/messages"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/text_input_wrapper"
        android:layout_below="@+id/toolbar"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginBottom="8dp"
        tools:listitem="@layout/animal_list_item" />

    <RelativeLayout
        android:id="@+id/text_input_wrapper"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true">

        <EditText
            android:id="@+id/enter_messages"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="8dp"
            android:layout_marginEnd="8dp"
            android:layout_marginBottom="8dp"
            android:layout_centerVertical="true" />

        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignEnd="@+id/enter_messages"
            android:layout_marginLeft="8dp"
            android:text="Send"
            android:layout_centerVertical="true" />
    </RelativeLayout>


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