GridView横滑效果的实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yoonerloop/article/details/83153363

 

要实现一个横向滑动,通常是使用horizontalscrollview,他可以横向滚动;要实现宫格布局,一般是使用GridView。那么要实现横向滑动的表格布局就需要结合二者,进行构建。

1、xml布局:

horizontalscrollview作为父布局,可以横向滑动,GridView作为子布局可以设置表格布局,如果再进一步进行拓展,只需要设置横向表格布局不需要横向滑动,仅仅GridView就够了。依据这个原理来实现xml文件。

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        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"
        android:layout_height="match_parent"
        tools:context="com.scroll.demo.MainActivity">

        <HorizontalScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:scrollbars="none">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent">

                <GridView
                    android:id="@+id/gridview"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:stretchMode="spacingWidthUniform">
                </GridView>
            </LinearLayout>
        </HorizontalScrollView>

    </LinearLayout>

2、代码实现

HorizontalScrollView里面包裹的定时横向滑动的内容,也就是GridView,他的layout_width为match_parent,因此需要GridView的item填充内容,填充多宽就能滑动多宽,高度上可以不做限制。依据这个原理进行代码实现,核心代码如下:

        //每个表格宽度:和xml的item保持一致
        int itemWidth = getResources().getDimensionPixelSize(R.dimen.width_60);
        //所需要展示的个数,一般接口返回,这里array表示一个数组
        int count = array.length;
        //这里行是关键,设置mGridview的width为itemWidth * count
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                itemWidth * count, LinearLayout.LayoutParams.MATCH_PARENT);
        mGridview.setLayoutParams(params);
        mGridview.setColumnWidth(itemWidth);
        mGridview.setStretchMode(GridView.NO_STRETCH);
        //设置表格个数
        mGridview.setNumColumns(count);
        //去掉默认的状态选择器
        mGridview.setSelector(new ColorDrawable(Color.TRANSPARENT));
        //设置Adapter
        mGridview.setAdapter(new MyAdapter());

       效果图如下:

       源码地址:https://download.csdn.net/download/yoonerloop/10730573

 

 

猜你喜欢

转载自blog.csdn.net/yoonerloop/article/details/83153363