Как я могу показать опцию продолжить чтение в приложении блога? - PullRequest
0 голосов
/ 26 января 2020

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

То, что я хочу, - это моя основная деятельность в обзоре реселлера, мне нужно показать все посты с изображением заголовка и небольшим описанием, и если пользователь хочет прочитать больше, то это должно быть показано продолжить чтение опция / кнопка, и в этом щелчке всего поста можно развернуть только там.

Как я могу это сделать?

Я знаю, что такое переработчик и адаптер. но как мне это продолжить читать все?

строка адаптера:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="80dp"
    android:layout_margin="5dp"
    android:background="@drawable/small_item_back"
    android:layout_height="100dp">
    <RelativeLayout
        android:padding="10dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <ImageView
            android:id="@+id/iv_1"
            android:layout_alignParentTop="true"
            android:padding="10dp"
            android:src="@drawable/image5"
            android:layout_centerHorizontal="true"
            android:layout_width="70dp"
            android:layout_height="50dp" />
        <TextView
            android:layout_centerHorizontal="true"
            android:gravity="center"
            android:id="@+id/tv"
            android:text="Meals for One"
            android:textColor="@color/colorBlack"
            android:textSize="12sp"
            android:layout_below="@id/iv_1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </RelativeLayout>

</LinearLayout>

Ответы [ 2 ]

0 голосов
/ 26 января 2020

Вы можете сделать это внутри onBindViewHolder вашего окна просмотра. GetlineCount () вернет вам общее количество строк. Вы можете указать максимальное количество строк для отображения внутри MAX_LINES. Используйте свойство ellipsize до конца. здесь содержимое моего текстового обзора.

@Override
    public void onBindViewHolder(@NonNull final MovieReviewViewHolder holder, int position) {
        //get the current review
        Review review = reviewList.get(position);
        //update view data
        holder.author.setText(review.getAuthor());
        holder.content.setText(review.getContent());

        //get the total line count for the review TextView and set the maxlines accordingly
        // to expand and collapse cardview wrapping the review content
        holder.content.post(new Runnable() {
            @Override
            public void run() {
                final int lineCount = holder.content.getLineCount();

                if (lineCount > MAX_LINES) {
                    //initially display the content in the set max number of lines
                    holder.content.setMaxLines(MAX_LINES);
                    holder.content.setEllipsize(TextUtils.TruncateAt.END);
                    //show a button to enable expanding truncated text
                    holder.button.setVisibility(View.VISIBLE);

                    //set click listener on the "show more" button
                    holder.button.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            if (expandable) {
                                expandable = false;
                                //extent the max lines to be able to display the whole review content
                                //if "show more" is clicked
                                holder.content.setMaxLines(lineCount);
                                holder.button.setImageResource(R.drawable.ic_keyboard_arrow_up);
                            } else {
                                expandable = true;
                                //reset the max lines when "show less" is clicked
                                holder.content.setMaxLines(MAX_LINES);
                                holder.button.setImageResource(R.drawable.ic_keyboard_arrow_down);
                            }

                        }
                    });
                } else {
                    //hide the button if the review content lines is not more than the set max lines property
                    holder.button.setVisibility(View.GONE);
                }
            }
        });
    }
0 голосов
/ 26 января 2020

Для этого вы можете использовать Spannable текст. то есть в kotlin вы можете сделать это, как показано ниже, в вашем адаптере для повторного просмотра.

if (yourText.length > 60) {
    val spanText =

        SpannableString("${mList[position].eventDetailsInfo!!.substring(0, 50)} see more...")
        spanText.setSpan(
          ForegroundColorSpan(Color.GRAY),
          spanText.length - 12,
          spanText.length - 1,
          Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
       )
       yourViewHolder.tv.text = spanText
    }

Затем в onclick вашего элемента просмотра вы можете установить полное описание в textview.

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