要实现一个横向滑动,通常是使用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