技术标签: Android开发(初学)
单纯使用GridView
通用的两种给GridView 添加分割线的方法;http://stackoverflow.com/questions/7132030/android-gridview-draw-dividers
给Gridview 添加分割线,也就是实现网格布局,不清楚谷歌为什么没有给Gridview 添加一个类似 ListView 的Divider 属性,因此就需要我们自己去添加分割线,
目前两种方法,第一种是 利用GridView 的 android:horizontalSpacing="1dp"与android:verticalSpacing="1dp" 属性 利用GridView的背景色 与ItemView的背景色 ,之间的间隙作为分割线。
利用 Spacing 属性 的分割线效果图:
这种方法可以实现 网格分割线,但是缺点是 item 没有的地方,其显示的是背景色,不太美观。
这是我们参考支付宝:支付宝做的是,默认是整行的,不够正行, 添加空白的item。
如图:
没有也放上一个item 占位,可以解决背景问题。
第二种方法 就是使用背景选择器 Selector。
相比较第一种方法,第二种方法实现起来更简单,但是也有一个小瑕疵,因为item 使用了selector, 那么相邻两个item 之间的分割线相当于两条,会加深。
如图所示:
仔细看图,在线充值的右边的线,与上面的线比起来 很不明显。
RecyclerView
下面开始讲今天的主角。抛开顶部的轮播图不说,下面那个表格大家首先想到的可能就是GridView。但是,既然我们已经有了全新且强大的RecyclerView控件,就可以在绝大多数场景下抛弃ListView或者GridView了。而对于RecyclerView替代ListView,相信大家已经有了一定的了解并在项目中有了一定的应用,但是对于RecyclerView替代GridView的使用,可能大家还些许陌生。接下来在这篇文章中就为大家详细讲述如何使用RecyclerView一个控件,搞定类似这样子的首页。
集成RecyclerView
首先,如果你还从未试用过RecyclerView,当然是要在build.gradle中做出如下配置从而集成RecyclerView
布局
现在我们在MainActivity简单的实现我们想要的效果,那么在activity_main.xml只要有一个RecyclerView就可以了。如下:
Adapter
首先,我们先来看一下Adapter是如何编写的
Item布局文件:
Activity
接下来再来看看我们在Activity中的代码如何编写
好了,接下来我们运行一下看看效果吧!
好了,那么和效果图还有一点点差距,就是画线!
线应该怎么画?在布局文件中画?貌似可行,但如果每个条目的边框都不规律怎么办?画一堆布局文件吗?太麻烦了。
所以在此就要用的RecyclerView中了另外一大特性:ItemDecoration。
在此我们写了一个名为MyItemDecoration的类,如下:
回到我们的Activity中,加如下代码即可:
最后再看看是什么效果:
当然,尽管最终效果有一些瑕疵,但是相信大家已经都基本明白了其中的思路,应用在自己的项目中的时候必然也要做出相应的调整。
最后,不得不说,现在RecyclerView已经基本具备了替代ListView和GridView的能力,在我们的项目知学中,大多数的列表都已经是以RecyclerView控件的形式作为展现。本文仅仅是从一个非常入门级的角度去讲解如何使用RecyclerView,而对于这个效果而言,还有很多种其他的实现方式,尤其是对于Adapter中的处理,也希望能够与大家多多交流。谢谢!
import keraskeras.__version__Using TensorFlow backend.'2.3.1'5.2 - Using convnets with small datasetsThis notebook contains the code sample found in Chapter 5, Section 2 of Deep Learning with Python. Note that the original text features far more co
用管理员身份执行: grant unlimited tablespace to 用户名
Cesium+truf.js实现模型、地形通用的填挖方分析。
1. 浏览器:http://api.online-service.vip/ip/me2. 命令行: curl api.online-service.vip/ip/me
1.判断是不是ipv6字符import java.util.Scanner;public class Zijie { public static void main(String[] args){ Scanner sc=new Scanner(System.in); String str=sc.next(); S...
使用curl而不是file_get_contents :$address = "India+Panchkula"; $url = "http://maps.google.com/maps/api/geocode/json?address=$address&sensor=false&region=India"; $ch = curl_init(); curl_setopt($ch, ...
在windows环境中用vs2015编译程序后,函数GetModuleFileName获取到的路径使用printf打印出来只有磁盘符,而不是整个路径。vs2015编译时设置的字符集是unicode,(其中:Unicode通常用两个字节表示一个字符,这是与ASCII编码不同的地方,网上很多资料有描述)我遇到问题是,用GetModuleFileName获取到路径后,还想保存到char型的字符数...
docker搭建系列docker环境搭建zk集群docker搭建redis集群docker环境搭建elasticsearchdocker搭建rabbitmq集群docker环境搭建ELK序ELK是开源日志界的三大剑客,本文主要讲怎么在docker里头跑起来这一套东东。镜像这里采用docker-elk的镜像。运行c...
Window是无限数据流处理的核心,Window将一个无限的stream拆分成有限大小的”buckets”桶,我们可以在这些桶上做计算操作。本文主要聚焦于在Flink中如何进行窗口操作,以及程序员如何从window提供的功能中获得最大的收益。 窗口化的Flink程序的一般结构如下,第一个代码段中是分组的流,而第二段是非分组的流。正如我们所见,唯一的区别是分组的stream调用...
一般出现在这个问题是由于配置文件权限出了问题,只需要三大步即可解决:1,关闭jenkins服务systemctl stop jenkins2,修改config.xml(最好在修改之前备份一下这个文件,以防止以后万一还需要这个版本) vim /var/lib/jenkins/config.xml修改第10行 <useSecurity>true</useSe...
转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 前面已经有三篇文章介绍如何在ViewPager加上指示器了,这也是最后一篇介绍关于ViewPager的指示器的文章了。 这篇文章介绍使用开源项目PagerSlidingTabStrip实现这种效果。这个开源项目和之前的ScrpllingTabs是同一个作者。 下面我们首先看一下