RecyclerView перекрывает TextView и Button или исчезает внутри фрагмента - PullRequest
0 голосов
/ 02 ноября 2018

Я застрял на целый день с простым вопросом ...
Внутри моего фрагмента я хочу разместить вертикально сверху - TextView (заголовок), под ним - RecyclerView, а снизу recyclerview - кнопка Это мой фрагмент xml

<?xml version="1.0" encoding="utf-8"?><android.support.constraint.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"
tools:context=".presentation.view.CurrentLocationFragment">

<TextView
    android:id="@+id/country_output"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/recycler_view_title"
    android:textAlignment="center"
    android:textSize="30sp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<android.support.v7.widget.RecyclerView
    android:id="@+id/recycler_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="12dp"
    app:layout_constraintBottom_toTopOf="@id/btn_country_choice"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@id/country_output"
    />

<Button
    android:id="@+id/btn_country_choice"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/yes"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent" />

в этом случае окно повторного просмотра перекрывает представление текста, а кнопка частично перекрывает представление повторного просмотра. это скриншот ovelapping

если я определю в программе recyclerview android: layout_height = "0dp", то у меня возникнет еще одна проблема - утилита-просмотрщик исчез

disappering

превью в андроид студии отображает все как мне нужно, а на устройстве все другое android studio preview

есть предложения?

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Используйте MATCH_CONSTRAINT для высоты и ширины как для RecyclerView, так и для добавленного кода компоновки. Как показано ниже

android:layout_width="0dp"
android:layout_height="0dp"
0 голосов
/ 02 ноября 2018

Ваш RecyclerView имеет проблемы с ограничениями. Его высота не является ограничением, она оборачивает его содержимое. Вы должны использовать 0dp, что означает MATCH_CONSTRAINT:

Использование 0dp, что эквивалентно "MATCH_CONSTRAINT"

Важно: MATCH_PARENT не рекомендуется для виджетов, содержащихся в ConstraintLayout. Подобное поведение можно определить с помощью MATCH_CONSTRAINT с соответствующим левым / правым или верхним / нижним ограничения устанавливаются на «родительский».

https://developer.android.com/reference/android/support/constraint/ConstraintLayout

Также вместо @id используйте @+id. Это потому, что ваш Button ID объявлен только перед вашим RecyclerView в вашем макете. Из документов:

Символ at (@) в начале строки указывает, что Анализатор XML должен проанализировать и развернуть оставшуюся часть строки идентификатора и идентифицировать его как ресурс ID. Символ плюс (+) означает, что это новое имя ресурса, которое должно быть создано и добавлено в наши ресурсы (в файле R.java). Есть ряд других ресурсов, удостоверяющих личность, которые предлагаются фреймворком Android. При ссылке на Android идентификатор ресурса, вам не нужен символ плюс, но необходимо добавить андроид пространство имен пакета.

Итак, применяя все:

<android.support.v7.widget.RecyclerView
    android:id="@+id/recycler_view"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:layout_marginBottom="12dp"
    app:layout_constraintBottom_toTopOf="@+id/btn_country_choice"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@id/country_output"/>
...