Как заставить RecyclerView вести себя как Paragraph? - PullRequest
0 голосов
/ 30 марта 2019

Я хочу сделать вид, где некоторые строки отображаются в виде абзаца (т.е. не в виде вертикального списка, а в виде абзаца).Но я также хочу, чтобы каждая строка была кликабельной, чтобы я мог предложить пользователю поделиться этой конкретной строкой.

На самом деле я создаю приложение для Корана с переводом.Я хочу, чтобы пользователь читал Коран как автономно (1-е изображение), так и с переводом (2-е изображение).Но я хочу автономную версию, как 1-е изображение ниже, в формате абзаца.Как добиться этого, используя RecyclerView (как я уже достиг версии перевода с RecyclerView)?

Другими словами, я знаю, как использовать два представления в одном RecyclerView , но (см. 3-5 строк первого изображения) как преобразовать один макет в другой с помощью RecyclerView

Редактировать: Я пробовал flexbox, я не знаюне удовлетворяю мое требование.standalone with translation

1 Ответ

1 голос
/ 30 марта 2019

Ответ - FlexBoxLayoutManager, вы можете использовать его с RecyclerView, поместив

    implementation 'com.google.android:flexbox:1.0.0'

в файл Gradle.Теперь настраиваем макет RecyclerView,

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

    android:layout_marginBottom="5dp"
    xmlns:toools="http://schemas.android.com/tools">
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toEndOf="@id/end_indicator"
    android:textSize="20sp"
    android:layout_marginEnd="5dp"
    android:layout_marginStart="5dp"
    android:textDirection="anyRtl"
    android:id="@+id/line_holder"
    />
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textColor="@android:color/black"
    android:layout_marginStart="5dp"
    android:layout_alignBaseline="@id/line_holder"
    android:gravity="center_vertical|center_horizontal"
    android:textAlignment="gravity"
    android:layout_marginEnd="5dp"
    android:background="@drawable/stackoverflow_bg"
    android:id="@+id/end_indicator"/>
</RelativeLayout>

здесь stackoverflow_bg.xml - рисование овальной формы.Теперь настраиваем RecyclerView,

 FlexboxLayoutManager manager = new FlexboxLayoutManager(this);
    manager.setJustifyContent(JustifyContent.CENTER);
    manager.setFlexWrap(FlexWrap.WRAP);
    manager.setFlexDirection(FlexDirection.ROW_REVERSE);
    rv.setLayoutManager(manager);
    rv.setAdapter(rvAdapter);

Макет, который я сделал: recyclerview Как видите, этот макет требует некоторой работы.Индикатор конца должен быть выровнен по последней строке TextView, чтобы устранить проблему.Теперь вы даже можете обрабатывать события щелчка строки, как это делается внутри Recyclerview.

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