RecyclerView скрывается под динамическим представлением в Android - PullRequest
0 голосов
/ 11 марта 2019

У меня есть RecyclerView в xml и LinearLayout в нижней части этого действия. Это действие работает как окно чата, где вопрос отображается в виде сообщения чата, и пользователь получает несколько случайных вариантов множественного выбора в представлении, но когда RecyclerView заполняется страницей, полной данных, я хочу сделать это RecyclerView всегда выше макета, где создаются опции, но то, что я до сих пор делал, не работает должным образом, данные RecyclerView всегда скрываются под макетом, и каждый раз, когда мне нужно прокрутить вниз, чтобы увидеть, что там написано. Я использовал метод

    adapter.notifyItemInserted(array.size());
    recyclerView.scrollToPosition(array.size());

Это добавляет элемент в RecyclerView, а также прокручивает вниз, но скрывается под макетом, но я всегда устанавливал его над макетом в XML, я думаю, проблема в том, что я динамически создаю некоторые представления в этом макете. какой размер является содержимым переноса, поэтому RecyclerView не обновляется время от времени с высотой макета внизу. Вот код xml этой Деятельности

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/rlMain"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ChatBotActivity">

    <include
        android:id="@+id/header"
        layout="@layout/header"></include>


    <android.support.v7.widget.RecyclerView
        android:id="@+id/rcv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/ll"
        android:layout_below="@+id/header" />


    <LinearLayout
        android:id="@+id/ll"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:orientation="vertical"></LinearLayout>

    <LinearLayout
        android:id="@+id/ll2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal"
        android:visibility="invisible"
        android:weightSum="7">

        <EditText
            android:id="@+id/etMessage"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="5"
            android:hint="Type a message"
            android:paddingLeft="@dimen/ten_dp"
            android:textColorHint="@color/fade" />

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_alignParentBottom="true"
            android:layout_gravity="center"
            android:layout_marginRight="@dimen/five_dp"
            android:layout_weight="2"
            android:background="@android:color/transparent"
            android:onClick="sendClick"
            android:src="@drawable/ic_send_black_24dp"
            android:text="send" />
    </LinearLayout>


</RelativeLayout>

RecyclerView всегда выше LinearLayout с идентификатором ll, но я заполняю этот макет из Java, и его высота время от времени меняется, но высота RecyclerView не изменяется соответственно, пожалуйста помощь!

1 Ответ

0 голосов
/ 11 марта 2019

Наконец-то я сам решил вопрос, это была забавная ошибка, которую я делал, с макетом все было в порядке, но мое recylerview просто не прокручивалось, мне пришлось изменить это:

Предыдущая:

    adapter.notifyItemInserted(array.size());
    recyclerView.scrollToPosition(array.size());

Позже:

adapter.notifyItemInserted(array.size()-1);
recyclerView.scrollToPosition(array.size()-1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...