- 博客(11)
- 收藏
- 关注
原创 RecyclerView实现上拉加载功能
最近在做需求的时候,需要实现列表的上拉加载功能。在这里进行记录分享。其实上拉加载功能只需要为RecyclerView的Item布局添加一个FooterView,然后通过判断是否滑动到最后一条Item来控制FooterView的显隐来做到一个上拉加载的功能。先看代码class PaperListAdapter(private val context: Context, private var paperList: List<PaperListModel>, private val sub
2022-03-21 11:09:27 1255
原创 RecyclerView使用GridLayoutManager时如何等分间距
最近在做需求的时候,需要在界面展示一个四列的列表。毫无疑问,我们应该采用RecyclerView并采用它的网格布局管理器,即GridLayoutManager来实现。当然,这种实现肯定是没问题的。不过设计老师一般会要求让这几列的列表把给出的宽度等距离分割掉。也就是说,第一列和最后一列的列表不能距两边有间距,之间的需要等分间距。类似这样的效果那么假如我们把宽度设置为wrap_content,则出来的效果距离右边还有相当距离,无法让最后一列内容紧贴右侧。假如我们将宽度设置为match_parent,再给
2022-03-18 20:34:12 4063
原创 Kotlin开发中标准函数的选择
作为一名Android开发者,现在很多APP已经采用了Kotlin作为开发语言。我们的项目也采用了Kotlin作为开发语言,Kotlin中有一些标准函数来提高我们的开发的效率,比如with,run,T.run,T.let,T.also,T.apply,但是之前一直没有搞清楚它们之间的区别和使用场景,现在简单记一下对于他们之间区别的理解。当然,在很多场景下不管使用哪个函数都可以达到预期的效果。不过它们之间还是存在了一些细微的差别,对于这些标准函数来说,其实区别说白了无非两个方面,一个是作用域,一个是返回值
2022-03-17 19:17:22 2114
原创 RecyclerView流式布局
最近在做需求的时候,碰到有各种筛选项的界面,类似这样这种筛选界面也比较常见,一般我们都采用RecyclerView来实现,当筛选项比较少的时候,我们选择使用线性布局来实现,当筛选项比较多,但是每个筛选项长度一样时,我们可以采用网格布局。但是这次的需求,筛选项有长有短,并且当每一行还有空间时,不能进行换行,因此RecyclerView自带的瀑布流布局也不能满足需求。我们知道RecyclerView的布局是由LayoutManager负责,因此如果要实现这种效果,我把它称之为流式布局,需要自定义L.
2022-03-17 17:24:50 2266 1
原创 Dialog设置宽高问题
最近在做需求的时候,由于有大量的弹窗,所以基本上弹窗都使用了Dialog进行实现。但是没想到Dialog真难用啊。最令人崩溃的就是它的宽高问题了,Dialog会忽视根布局中的宽高设置,最终宽度会由Dialog的style中的android:windowMinWidthMinor属性决定,高度会表现为wrap_content,所以说在根布局中设置宽高是没有用的,而这个属性也往往不能满足我们的需求,下面我根据不同的情况写一下如何设置Dialog的宽高。一、Dialog宽高固定刚刚提到,由于根布局的宽高属
2022-03-16 18:52:29 9911
原创 TabLayout + ViewPager2自定义Tab样式
最近在做项目的时候,遇到了TabLayout + ViewPager2 + Fragment的技术实现。一般TabLayout自带的默认字体并不能满足设计老师的需求。尽管有 app:tabTextAppearance 这个属性可以自定义默认的大小,但往往也是无法达到预期的效果。因此我们需要对TabLayout的Tab进行一个自定义的样式,具体的方式网上很多都可以查到,核心做法就是用自定义的View赋值给TabLayout的customView。具体代码如下: list?.forEach { d
2022-03-16 17:26:08 1919
原创 Dialog布局中拥有EditText时监听软键盘的弹出和收起
最近在做项目的时候,遇到了一个需求:点击按钮在屏幕中间弹出一个弹窗,弹窗上面有一个输入框。对于这个需求我采用Dialog+EditText来实现,功能并不难实现。但是UI老师要求在没有进行输入的时候,弹窗位置在屏幕中间。当进行输入的时候,弹窗位置在上面。现在的情况是,当输入框调起软键盘时,软键盘会将弹窗中输入框以上的布局进行上移,但是弹窗位置本身不会变化。也就是说,软键盘会遮盖弹窗中输入框下方的布局,而将其上方的布局进行挤压。在网上看调整软键盘的输入模式后,虽然不会对布局产生挤压,但是却直接盖在了弹窗上
2022-03-15 19:44:51 1752
原创 用RecyclerView实现N级树形列表
最近在做项目的时候,需要实现一个章节树的功能。设计图大致类似这样所谓树形列表,即是在父元素中包含子元素,当点击父元素的时候进行展开子元素,再次点击时收起子元素。且树形列表往往有多个层级。比较典型的情况就是计算机中的文件系统以及书籍中的目录这两种场景。在我的项目场景中仅仅是展示一个三级列表,这样的话其实可以选择三个RecyclerView嵌套的方式,采用这种方式实现的优点是思考起来简单,容易理解。但是缺点是对RecyclerView需要有较多的控制,并且在项目迭代中不够灵活。因此我认为采用一个
2022-03-15 14:35:33 1278
原创 kotlin学习总结(三)
五 Lambda编程数组(Array)使用arrayOf()来创建参数是一个可变参数的泛型对象。如下所示val arr1= arrayOf(1,2,3,4,5)val arr2= arrayOf("0","1","2",32.4f)使用arrayOfNulls()用于创建一个指定数据类型且可以为空的给定元素的个数的数组。如下所示val arr3 = arrayOfNulls<Int>(3)除了以上方法,kotlin提供了专门的类来表示原始类型的数组。它们分别是B
2021-08-31 14:19:57 228
原创 kotlin学习总结(二)
目录四 类与对象继承与构造函数接口函数的可见性修饰符数据类和单例类四 类与对象在kotlin创建一个类的代码如下所示class Person{ var name="" var age=0 fun eat(){ print(name) print(age)}对这个类进行实例化的代码如下所示val p=Person()实例化的方法和Java基本类似,只是去掉了new关键字。上述代码中p就可以称为Person
2021-08-30 16:39:27 399
原创 Kotlin学习总结(一)
目录前言最近在学习Android开发,在之前Google只提供了Java一种语言来开发Android。但是现在Android官网文档已经是kotlin First。并且Kotlin和Java是100%兼容的。也就是说Kotlin可以直接调用Java编写的代码,也可以使用Java的第三方开源库。 编程语言大致可以分为编译性语言和解释性语言。编译性语言的特点是编译器可以将我们编写的源代码一次性编译成计算机可以识别的二进制文件,然后由计算机直接执行,如C/C++。解...
2021-08-30 10:36:43 200
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人