Android编程之DevsmartLib-Android:Android 上一个水平滑动的 ListView 组件。
白羽 2018-07-24 来源 :网络 阅读 1310 评论 0

摘要:本文将带你了解Android编程之DevsmartLib-Android:Android 上一个水平滑动的 ListView 组件。,希望本文对大家学Android有所帮助

一个横向滑动的l:istview效果,其实很简单,

有几种实现思路:

①:recycleView实现;

②:自定义一个HorizontalListView 继承自listview,控制滑动方向从纵向变为横向;

③:通过HorizontalScrollView嵌套一个GridView来实现。

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

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

<HorizontalScrollView
   android:id="@+id/sc"
   xmlns:android="//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>12345678910111213141516171819202122232425

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

//绑定GridView布局private GridView weekDateGridView=(GridView)findViewById(R.id.gridViewHorizontal);//构建数据源private List<String> weekDateData=new List<String>();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); // 设置列数量=列表集合数


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!

本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程