如何使TextView最大行数-如果更多-可伸缩

时间:2019-07-06 12:28:39

标签: java android xml kotlin

我有recyclerView,每个itemView都包含以下内容:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
    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"
    app:cardCornerRadius="8dp"
    android:layout_marginBottom="4dp"
    android:layout_height="wrap_content">

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

        <View
                android:id="@+id/divider"
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:background="?android:attr/listDivider"/>

        <ScrollView android:layout_width="match_parent"
                    android:layout_height="100sp">
            <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:id="@+id/answer"/>

        </ScrollView>
    </LinearLayout>

</android.support.v7.widget.CardView>

通过使用此kotlin文件,我使TextViews在RecyclerView内可滚动(只有在不适合100sp的情况下,textView才可滚动)。

            itemView.answer.setOnTouchListener{v,event ->
            // Disallow the touch request for parent scroll on touch of child view
            v.parent.requestDisallowInterceptTouchEvent(true)
            false
        }

相同的Java格式文件:

            itemView.answer.setOnTouchListener(new View.OnTouchListener() {

            public boolean onTouch(View v, MotionEvent event) {
                // Disallow the touch request for parent scroll on touch of child view
                v.getParent().requestDisallowInterceptTouchEvent(true);
                return false;
            }
        });

问题在于,然后TextView仅包含1或2行文本,该TextView内部有很多空白空间。我想做这样的事情:当TextView内有1-5行文本时,其高度仅为“ wrap_content” 并且它是不可滚动的。 但是当有6行以上的文本时,它仅适合5行,以查看用户需要滚动该TextView的其他行。

我该怎么做? 当前RecyclerView的屏幕截图: enter image description here

1 个答案:

答案 0 :(得分:1)

永远不要在import collections a = [1, 2, 2, 2, 3, 3, 4, 4, 5, 6, 7, 7, 8] print([item for item, count in collections.Counter(a).items()]) 内包含滚动视图。这将导致无法预测的行为,并且当最终用户尝试滚动列表并最终滚动ViewHolder的内容时,最终用户会感到沮丧。一种更好的匹配方法是实现可展开的ViewHolder,它在折叠状态下会显示例如3行文字,所有文字均处于展开状态。