Элемент представления переработчика усекается

#android #android-layout #android-recyclerview

#Android #android-макет #android-recyclerview

Вопрос:

Я сталкиваюсь со странным поведением с элементами просмотра ресайклера. Предполагается, что текстовые представления соответствуют родительским, но когда я запускаю его, я получаю следующее

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

Как вы можете видеть, все элементы усекаются, хотя его родительский элемент (внешний синий прямоугольник) соответствует родительскому элементу, как видно.

Если я прокручиваю вниз или вверх, то элементы занимают место, как и ожидалось. Смотрите Первый элемент, ниже которого я прокручивал его вверх и вниз:

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

Забавно, что после последнего изображения выше, если я открою резервную копию клавиатуры (или скрою), все элементы будут усечены до первого изображения.

Что-то между представлением recycler, клавиатурой и диалогом, в котором все это происходит, вызывает проблемы

Родительский:

     <LinearLayout
            android:id="@ id/llSearch"     
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
        
.
.
.
.

        <androidx.recyclerview.widget.RecyclerView
            android:id="@ id/rvLocSearch"
            android:layout_width="match_parent"
            android:layout_height="300dp"
            android:layout_marginTop="8dp" />
    
        </LinearLayout>
 

Элемент:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="wrap_content"
    android:orientation="vertical"
    android:background="@color/main_light_grey"
    android:paddingTop="5dp"
    android:paddingBottom="5dp">
    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        />
    <TextView
        android:id="@ id/tvLine1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="line 1"
        android:textStyle="bold"
        android:textColor="@color/White"
        android:textSize="@dimen/_16ssp" />

    <TextView
        android:id="@ id/tvLine2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="line 2"
        android:textStyle="bold"
        android:textColor="@color/White"
        android:textSize="@dimen/_16ssp" />

    <TextView
        android:id="@ id/tvDistance"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:text="# km"
        android:textColor="@color/White"
        android:textSize="@dimen/_12ssp"
        app:layout_constraintStart_toStartOf="@ id/ivIcon"
        app:layout_constraintTop_toBottomOf="@ id/ivIcon" />



</LinearLayout>
 

Комментарии:

1. Для проблемы с клавиатурой, возможно android:configChanges="keyboardHidden|screenSize|keyboard" , в манифесте, раздел activity может иметь смысл

2. Спасибо. Я попробовал. Не повезло

3. Ширина tvDistance равна wrap_content, плюс что такое ivIcon? Можете ли вы отправить нам соответствующее изображение, например, я вижу текст как «строка 2», но нигде на картинке я не вижу надписи «строка 2». Будет легко сравнить и определить, в чем проблема

4. Проблема не в tvDistance. Обрабатываются tvLine1 и tvLine2

Ответ №1:

Вам необходимо сохранить ширину tvDistance как родительскую, как и у других виджетов.

Замените эту строку

   android:id="@ id/tvDistance"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
 

с этим

  android:id="@ id/tvDistance"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 

Комментарии:

1. tvLine1 является родителем соответствия. Установка расстояния для соответствия родительскому или переносному содержимому должна иметь эффект

2. Да, он будет иметь. Попробуйте изменить и проверить результаты.