RecyclerView Внутри Recylerview, Внутренние элементы RecyclerView не отображаются полностью на некоторых устройствах - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть требование экрана с одной прокруткой. Основная деятельность с одним RecyclerView. Этот рядный предмет включает в себя 2 вида переработчика, один из которых горизонтальный, а другой - вертикальный. Каков наилучший подход к разработке этого представления, пожалуйста, дайте мне знать.

Текущая проблема, с которой я сталкиваюсь, связана с тем, что элементы Inner Vertical RecyclerView не отображаются полностью.

Ваша помощь высоко ценится!

"активность-main.xml"

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:descendantFocusability="blocksDescendants"
    android:orientation="vertical">

    <ProgressBar
        android:id="@+id/progressBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="top|center"
        android:indeterminate="false"
        android:minHeight="50dp"
        android:minWidth="50dp"
        android:padding="@dimen/dp_5"
        android:progress="1"
        android:visibility="gone" />

    <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_gravity="center"
        android:layout_margin="@dimen/dp_5"
        android:layout_weight="1"
        android:visibility="visible" />

</LinearLayout>

"row_item.xml" вида повторного использования активности

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/rounded_cornered_grey_stroke_background"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginEnd="5dp"
            android:layout_marginStart="5dp"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/tv_title"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_weight="1"
                android:gravity="start"
                android:text="Title"
                android:textColor="@color/sky_blue"
                android:textSize="18sp"
                android:textStyle="bold" />

            <View
                android:id="@+id/view_line"
                android:layout_width="2dp"
                android:layout_height="match_parent"
                android:layout_gravity="center"
                android:layout_marginEnd="10dp"
                android:layout_marginStart="10dp"
                android:background="@color/sky_blue" />

            <TextView
                android:id="@+id/tv_date"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="bottom|center"
                android:gravity="bottom"
                android:text="2018-08-30"
                android:textColor="@color/sky_blue"
                android:textSize="@dimen/sp_15"
                android:textStyle="normal" />

        </LinearLayout>

        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:layout_marginEnd="5dp"
            android:layout_marginStart="5dp"
            android:background="@color/sky_blue" />

        <android.support.v7.widget.RecyclerView
            android:id="@+id/rv_images"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:orientation="horizontal"
            android:visibility="gone" />

        <TextView
            android:id="@+id/tv_no_item"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginEnd="5dp"
            android:layout_marginStart="5dp"
            android:background="@null"
            android:padding="5dp"
            android:text="No item found"
            android:textColor="@color/dark_greish"
            android:textSize="14sp"
            android:textStyle="bold"
            android:visibility="gone" />

        <android.support.v7.widget.RecyclerView
            android:id="@+id/rv_list"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_gravity="center"
            android:layout_margin="@dimen/dp_5"
            android:layout_weight="1"
            android:visibility="gone" />

    </LinearLayout>

</LinearLayout>

"row_item.xml" из rv_list

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/tv_name"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="start|center"
        android:padding="5dp"
        android:text="Name"
        android:textColor="@color/dark_greish"
        android:textSize="14sp"
        android:textStyle="normal" />

    <View
        android:layout_width="2dp"
        android:layout_height="match_parent"
        android:background="@android:color/white"
        android:padding="5dp" />

    <TextView
        android:id="@+id/tv_value_one"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.25"
        android:gravity="start|center"
        android:padding="5dp"
        android:text="Value 1"
        android:textColor="@color/dark_greish"
        android:textSize="14sp"
        android:textStyle="normal" />
    <View
        android:layout_width="2dp"
        android:layout_height="match_parent"
        android:background="@android:color/white"
        android:padding="5dp" />

    <TextView
        android:id="@+id/tv_value_two"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.3"
        android:gravity="start|center"
        android:padding="5dp"
        android:text="Value 2"
        android:textColor="@color/dark_greish"
        android:textSize="14sp"
        android:textStyle="normal" />

</LinearLayout>

1 Ответ

0 голосов
/ 05 сентября 2018

Попробуйте использовать setRecycledViePool (viewPool) со своим внутренним представлением повторов в методе onCreateViewHolder внешнего адаптера представлений повторов. Просто передайте ссылку на внутренний пул представления повторного просмотра этому параметру метода.

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