HorizontalScrollView+recyclerView

HorizontlScrollView+recyclerView

最近工作中,遇到一些需求,需要recyclerView竖着展示数据的同时,可以左右滑动,刚开始,我觉得这个可以用recyclerView嵌套一下就可以做,但是发现自己的水平不是很够,就在大佬的指导下,找到了HorizontlScrollView这个横向滑动的控件,找到这个后觉得接下来就和容易了,但是问题还是不少,不多说废话,接下来,来说一下我的使用过程吧,

<HorizontalScrollView
                    android:id="@+id/scroll"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    app:layout_constraintHorizontal_weight="3"
                    app:layout_constraintLeft_toRightOf="@+id/time"
                    app:layout_constraintTop_toTopOf="parent"
                    app:layout_constraintRight_toRightOf="parent"
                    android:scrollbars="none"
                    android:fillViewport="true">
<!--                    android:fillViewport="true"-->
                    <androidx.recyclerview.widget.RecyclerView
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:id="@+id/hor_recycler" />
                </HorizontalScrollView>

这是布局,fillViewport=“true” 这个属性熟悉scrollView的朋友都知道,他是让scrollView的子控件在内容不足时能够显示,这里就不多做解释了,

        data.add("¥10000000")
        data.add("¥10000000")
        data.add("¥10000000")
        data.add("¥10000000")
        data.add("¥10000000")
        data.add("¥10000000")

        times.add("06-01")
        times.add("06-02")
        times.add("06-03")
        times.add("06-04")
        times.add("06-05")
        times.add("06-06")


        times.add(0,"")
        data.add(0,"")

        recyclerview.init(
                LinearLayoutManager(context),
                timeAdapter
        )

        recyclerViewAll.init(
                GridLayoutManager(context, data.size, RecyclerView.HORIZONTAL, false),
//                LinearLayoutManager(context),
                testAdapter
        )
        testAdapter.setNewData(data)
        timeAdapter.setNewData(times)

这个就是给recyclerView设置适配器,接下来重点就来了,

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:paddingLeft="10dp"
    android:paddingTop="10dp"
    android:paddingBottom="10dp"
    android:clipChildren="false">

    <TextView
        android:id="@+id/text"
        android:layout_width="150dp"
        android:layout_height="wrap_content"
        android:text="目标数"
        android:textSize="15sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/text2"
        android:layout_width="150dp"
        android:layout_height="wrap_content"
        android:text="达成数"
        android:textSize="15sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/text3"
        android:layout_width="150dp"
        android:layout_height="wrap_content"
        android:text="完成率"
        android:textSize="15sp"
        android:textStyle="bold" />

</LinearLayout>

这个是recyclerView适配器的布局,为了能让我们的内容能够超出屏幕,让我们整个布局滑动起来,所以给text设置宽度为150dp

class TestAdapter: BaseQuickAdapter<String,BaseViewHolder>(R.layout.adapter_test) {
    override fun convert(helper: BaseViewHolder, item: String?) {
        val adapterPosition = helper.adapterPosition
        if (adapterPosition == 0){

        }else{
            helper.setText(R.id.text,item)
            helper.setText(R.id.text2,"吃吃喝喝")
            helper.setText(R.id.text3,"芜湖")
        }
    }
}

这就是适配器的内容,效果我这是在是不会整一个Gif图,所以就不发效果图了,如果有不明白或者有问题的可以直接留言或者私信,我看到就会第一时间回复

上一篇:蓝桥杯回文日期


下一篇:dart中闭包的定义