Android横向滑动的listview

一个横向滑动的l:istview效果,其实很简单,有几种实现思路:①:recycleView实现;②:自定义一个HorizontalListView 继承自listview,控制滑动方向从纵向变为横向;③:通过HorizontalScrollView嵌套一个GridView来实现。

这里着重讨论一下第三种实现过程,因为,可以完全封装一波,使用的时候,完全copy一波,简单的修改一下横向item的大小尺寸以及item的布局修改就OK了。

话不多说,上代码:
首先,xml布局

<HorizontalScrollView 
    android:id="@+id/sc"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:scrollbars="none"
    android:layout_margin="0dp" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:orientation="horizontal">

        <GridView
            android:id="@+id/grid"

            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:numColumns="auto_fit"
            android:stretchMode="spacingWidthUniform" >
        GridView>
    LinearLayout>

HorizontalScrollView>

其次,activity中::
:首先当然是findviewbyid找到这个GridView,然后对于这个GridView的控制代码,封装进了一个方法中,再然后定义一个经典的adapter来,就OK了。

//绑定GridView布局
private GridView weekDateGridView=(GridView)findViewById(R.id.gridViewHorizontal);
//构建数据源
private List weekDateData=new List();
for (int i = 6; i < 14; i++) {
            String S=i+2+":00";
            weekDateData.add(S);
        }
//定义适配器
private WeekDateHorizontalAdatper horizontalAdatper=new WeekDateHorizontalAdatper(context, weekDateData);
//调用控制水平滚动的方法
setHorizontalGridView(weekDateData.size(), weekDateGridView);
        weekDateGridView.setAdapter(horizontalAdatper);
//绑定适配器
weekDateGridView.setAdapter(horizontalAdatper);



    /**
     * 水平滚动的GridView的控制
     */
    private void setHorizontalGridView(int siz, GridView gridView) {
        int size = siz;
//      int length = (int) getActivity().getResources().getDimension(
//              R.dimen.coreCourseWidth);
        int length=60;
        DisplayMetrics dm = new DisplayMetrics();
        this.getActivity().getWindowManager().getDefaultDisplay()
                .getMetrics(dm);
        float density = dm.density;
        int gridviewWidth = (int) (size * (length) * density);
        int itemWidth = (int) ((length) * density);

        @SuppressWarnings("deprecation")
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                gridviewWidth, LinearLayout.LayoutParams.FILL_PARENT);
        gridView.setLayoutParams(params); // 设置GirdView布局参数,横向布局的关键
        gridView.setColumnWidth(itemWidth); // 设置列表项宽
        gridView.setHorizontalSpacing(0); // 设置列表项水平间距
        gridView.setStretchMode(GridView.NO_STRETCH);
        gridView.setNumColumns(size); // 设置列数量=列表集合数

    }

adapter的定义,很简单,就不赘述了,下面上几张效果图:
Android横向滑动的listview_第1张图片

Android横向滑动的listview_第2张图片

你可能感兴趣的:(android技术)