控件
文章平均质量分 70
锐湃
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
TextView 边界Emoji表情显示不完整
摘要:TextView设置文本时,默认使用BufferType.NORMAL,可能导致表情显示不完整。通过使用setText(text, BufferType.SPANNABLE)方法可以解决这个问题,其中BufferType.SPANNABLE能更好地处理富文本内容。这种方法比单参数的setText()更灵活,适用于需要特殊格式显示的文本内容。转载 2025-08-11 15:26:01 · 59 阅读 · 0 评论 -
RecyclerView 中实现边缘渐变效果
本文介绍了在RecyclerView中实现边缘渐变效果的两种方法。基础方案通过添加顶部和底部的渐变遮罩View实现,优点是不需要修改RecyclerView本身且适配性强。进阶方案则利用RecyclerView的padding和clipToPadding属性配合背景渐变实现,无需额外View,更加轻量化。两种方法都支持调整遮罩高度、颜色和方向(可适配横向滚动)。方案一适合复杂背景,方案二适合纯色背景,开发者可根据实际需求选择。转载 2025-07-31 11:55:25 · 242 阅读 · 0 评论 -
ViewPager或ViewPager2调用 setCurrentItem(position) 不触发 onPageSelected 回调
ViewPager和ViewPager2使用setCurrentItem()时onPageSelected回调不触发的解决方案 摘要:使用ViewPager或ViewPager2时,setCurrentItem()不触发onPageSelected回调通常由四种原因导致:监听器注册时机不当、目标位置与当前页相同、ViewPager2接口差异或页面未初始化完成。解决方案包括:1)确保先注册监听器再调用setCurrentItem;2)处理位置相同时手动触发回调;3)使用post延迟确保页面初始化完成;4)避免转载 2025-07-31 11:53:10 · 356 阅读 · 0 评论 -
去掉ViewPager2滑动到边缘时的阻尼效果
摘要:本文介绍了如何去除ViewPager2滑动到边缘时的阻尼效果。通过反射获取ViewPager2内部的RecyclerView实例,调用setOverScrollMode(View.OVER_SCROLL_NEVER)方法禁用过度滚动效果。实现时需注意使用ViewTreeObserver确保初始化完成,并提供了备选方案通过遍历子视图获取RecyclerView的方法。该方案适用于需要更流畅滑动体验的场景,但需注意版本兼容性问题。转载 2025-07-31 11:52:45 · 117 阅读 · 0 评论 -
Inconsistency detected. Invalid view holder adapter positionChatViewHolder
RecyclerView常见错误"Invalid viewholder adapter position"通常由数据与视图不同步导致。主要原因是:异步数据更新、多线程问题、动画冲突或错误的notify调用。解决方案包括:1)确保在主线程更新数据;2)使用ListAdapter自动处理差异;3)正确使用notifyItem系列方法;4)在ViewHolder中使用安全位置;5)临时禁用动画。避免在onBindViewHolder中修改数据,不要混用notify方法,确保异步操作在主线程执行转载 2025-07-15 19:38:03 · 223 阅读 · 0 评论 -
用xpopup做弹窗
摘要:本文介绍了Android开发中使用XPopup库实现弹窗功能的方法。首先通过添加Gradle依赖安装XPopup库,然后展示两种弹窗实现方式:1) 自定义布局的底部弹窗(BottomPopup),包含标题和关闭按钮;2) 代码创建的简易确认弹窗(msgPop)。文中提供了XML布局示例和Java代码实现,包括弹窗初始化、内容设置和点击事件处理。测试效果表明,该方法可以灵活创建带模糊背景和动画效果的自定义弹窗,适用于不同交互场景。转载 2025-07-14 18:05:28 · 181 阅读 · 0 评论 -
判断 RecyclerView 滚动位置,是否滚动到最后一个和第一个 Item
Android中判断RecyclerView是否滚动到底部的方法:1. 推荐通过LayoutManager获取最后一个可见Item位置,与总数对比;2. 监听滚动状态,在停止时判断;3. 严格判断最后Item完全可见的方法。注意空列表、嵌套滚动和反向布局等情况。方案一适合常规场景,方案三适用于需完全可见的特殊需求。转载 2025-07-12 18:38:11 · 197 阅读 · 0 评论 -
实现 RecyclerView 堆叠
摘要:Android实现RecyclerView堆叠效果主要有四种方案:1) 使用第三方StackLayoutManager库快速实现卡片层叠;2) 自定义LayoutManager重写onLayoutChildren方法;3) 通过ItemDecoration调整绘制位置;4) 采用现成的OverLayCardLayoutManager库。方案一和四适合快速开发,方案二和三更灵活。优化建议包括添加触摸反馈、滑动删除功能以及控制可见项数量提升性能。开发者可根据项目需求选择不同实现方式。(150字)转载 2025-07-12 17:35:50 · 273 阅读 · 0 评论 -
RecyclerView 实现堆叠效果
摘要:在RecyclerView中实现Item堆叠效果主要有两种方法:1)使用ItemDecoration通过getItemOffsets设置负值偏移实现简单堆叠;2)通过自定义LayoutManager重写onLayoutChildren方法实现更复杂的布局控制。前者适用于简单堆叠,后者灵活性更高但实现较复杂。需注意堆叠效果可能影响点击事件处理,需要额外处理触摸区域。开发者可根据项目需求选择合适的方法,简单场景推荐使用ItemDecoration,复杂布局建议采用自定义LayoutManager实现。(1转载 2025-07-12 17:32:32 · 153 阅读 · 0 评论 -
ViewPager TabLayoutMediator 用法介绍
TabLayoutMediator 使用指南 TabLayoutMediator 是 Android Jetpack 提供的工具类,用于简化 TabLayout 和 ViewPager2 的联动绑定,实现标签页与页面滑动的同步效果。 核心功能: 自动同步:TabLayout 标签与 ViewPager2 页面滑动联动。 简化实现:无需手动监听,一行代码即可完成绑定。 使用步骤: 添加依赖:引入 Material Design 库。 布局配置:在 XML 中定义 TabLayout 和 ViewPager2。转载 2025-07-09 14:10:20 · 291 阅读 · 0 评论 -
自定义span绘制ReplacementSpan,背景 图形 图片
ReplacementSpan是Android用于自定义文本显示的抽象类,继承自CharacterStyle,可实现文本替换为图片、动态效果等。主要子类包括ImageSpan、BackgroundColorSpan等。自定义需实现getSize()测量尺寸和draw()绘制内容,示例演示了如何创建圆角背景文本。使用时需注意性能、尺寸一致性和兼容性问题,适用于实现复杂文本效果如图文混排和动态文字。转载 2025-07-08 18:28:08 · 172 阅读 · 0 评论 -
判断 RecyclerView 是否被用户滑动过
摘要:通过监听RecyclerView的滚动状态可以判断用户是否滑动过。主要方法包括记录初始位置、监听SCROLL_STATE_DRAGGING状态标记用户操作,以及比较当前与初始位置差异。实现时需注意布局管理器的适配,提供hasUserScrolled()和hasScrolledFromInitialPosition()两种判断方式,分别用于检测用户操作和位置变化。(150字)转载 2025-07-08 14:51:40 · 160 阅读 · 0 评论 -
RecyclerView 从下向上滚动
Android中实现RecyclerView从下向上滚动有三种方法:1) 设置LinearLayoutManager的reverseLayout为true,使内容从底部开始显示;2) 结合reverseLayout=false和stackFromEnd=true实现类似聊天界面的效果,新消息从底部进入;3) 自定义LayoutManager实现更复杂的布局效果。使用时需注意数据集顺序,可通过scrollToPosition或smoothScrollToPosition滚动到最新项。转载 2025-07-07 20:49:10 · 108 阅读 · 0 评论 -
EditText 中 imeOptions 设置actionNext
Android开发中,EditText的imeOptions属性用于设置软键盘回车键的功能。该属性可自定义软键盘右下角按钮的文本/图标及其行为,包括跳转输入框、完成输入、搜索、发送等常用操作。可通过XML或代码设置,并需配合OnEditorActionListener监听点击事件。使用时需注意将singleLine设为true以确保属性生效。不同属性值对应不同功能场景,如actionDone用于完成输入,actionSearch用于搜索框等。转载 2025-07-02 10:40:25 · 166 阅读 · 0 评论 -
探索EditDrawableText:让EditText的Drawable可点击hint
EditDrawableText是一个Android开源库,扩展了EditText组件实现Drawable可点击功能。该库通过自定义View处理触摸事件,支持四个方向的Drawable点击回调,保留标准EditText所有属性。典型应用场景包括密码可见性切换、表单验证和动态交互界面。主要特点包括:完全兼容性、灵活配置和简单集成。使用只需添加依赖和在XML中声明组件,通过设置点击监听器处理Drawable点击事件。项目地址:https://gitcode.com/gh_mirrors/ed/EditDrawa转载 2025-07-01 16:08:11 · 63 阅读 · 0 评论 -
layout_constraintDimensionRatio设置ConstraintLayout 宽高比例
Android布局中的layout_constraintDimensionRatio属性用于设置视图宽高比,确保在不同屏幕尺寸下保持比例。基本用法为"宽:高"格式,可指定W(宽度)或H(高度)作为基准方向。使用时需将宽或高设为0dp(match_constraint),并配合其他约束条件。常见应用包括视频播放器(16:9)、图片展示和网格布局,实现响应式比例效果。注意避免双向约束冲突,可结合bias属性调整优先级。转载 2025-07-01 11:42:28 · 272 阅读 · 0 评论 -
ViewBinding 在Adapter和include中的应用 和注意事项
ViewBinding 大大的减少了我们的工作量,也 避免了空指针和类型转化的错误。况且能支持include标签,不用在在类中定义各种View 然后在findViewByid了。直接定义好id直接拿来用。爽歪歪。赶快用在项目中吧。作者:丁大柚链接:https://juejin.cn/post/6989647841828274183来源:稀土掘金著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。转载 2025-07-01 11:36:27 · 252 阅读 · 0 评论 -
onTouch与onClick冲突解决方法
本文介绍了解决Android中View同时设置onTouch和onClick事件冲突的方法。关键点在于正确处理MotionEvent的ACTION_DOWN、ACTION_MOVE和ACTION_UP事件:ACTION_DOWN时不能直接返回true以免屏蔽onClick;处理滑动(ACTION_MOVE)时需生成并发送ACTION_CANCEL事件来取消点击事件;ACTION_UP返回false允许后续事件处理。该方法通过MotionEvent.obtain()和recycle()机制正确处理事件分发,确转载 2025-06-25 17:55:24 · 92 阅读 · 0 评论 -
自定义LayoutManager第十一式之飞龙在天
本文介绍了如何自定义RecyclerView的PathLayoutManager,实现沿路径布局Item的特效。文章从布局原理、回收机制等基础知识入手,详细讲解了PathLayoutManager的实现过程。通过Keyframes类获取路径坐标点及旋转角度,支持滑动、溢出模式、无限循环、动态缩放、自动选中等功能。关键点包括:分离/回收Item、根据路径百分比布局、处理滑动偏移量、优化回收策略等。最终效果是Item能沿任意路径排列并跟随手势滑动,同时保持流畅性能。该项目已开源在GitHub,适用于实现各种炫酷转载 2025-06-25 10:10:49 · 109 阅读 · 0 评论 -
RecyclerView 实现流式布局,自适应列数及高度
Android实现RecyclerView流式布局有两种方案:1)推荐使用Google的FlexboxLayoutManager,通过设置方向、换行和对齐方式即可快速实现;2)自定义FlowLayoutManager,需要重写onLayoutChildren方法手动计算布局位置。两种方式都能实现自动换行和高度自适应,FlexboxLayoutManager更简便,而自定义方案更灵活。性能优化方面可利用RecyclerView的回收机制处理大量数据。此外,对于更复杂的需求可以考虑StaggeredGridLa转载 2025-06-24 18:18:50 · 331 阅读 · 0 评论 -
animated-rotate简单的图片旋转动画
animated-rotate简单的图片旋转动画转载 2025-06-24 17:43:52 · 95 阅读 · 0 评论 -
通过Recyclerview实现流式布局自适应列数及高度
通过Recyclerview实现流式布局自适应列数及高度转载 2025-06-24 16:25:47 · 120 阅读 · 0 评论 -
BaseRecyclerViewAdapterHelper
BaseRecyclerViewAdapterHelper是一款强大的Android RecyclerView适配器库,能大幅简化开发工作。它支持多种实用功能:包括减少70%代码量、添加动画效果、分组显示、多种布局类型、拖拽排序、下拉刷新/上拉加载等。通过简单配置即可实现复杂的交互效果,如子控件点击监听、自定义加载动画、多Item类型管理等。开发者只需在Gradle中引入依赖,即可快速构建高效灵活的列表界面。该库不仅提供易用功能,还公开实现原理,帮助开发者深入理解RecyclerView工作机制。支持And转载 2025-06-23 13:49:26 · 227 阅读 · 0 评论 -
BaseQuickAdapter 中的 convertPayloads () 方法详解,局部刷新payload
摘要:BaseQuickAdapter的convertPayloads()方法可实现RecyclerView局部刷新,避免传统notifyDataSetChanged()全量刷新带来的性能损耗。该方法通过payload参数接收增量数据,开发者需重写该方法处理特定视图更新。典型使用场景包括消息状态变更、点赞数更新等。注意事项包括:payload设计应轻量化,保持convert()全量更新逻辑,确保视图状态一致性。合理使用该方法能显著提升列表性能,优化用户体验。转载 2025-06-21 18:40:04 · 182 阅读 · 0 评论 -
Cannot call this method while RecyclerView is computing a layout or scrolling androidx.viewpager2
摘要:分析RecyclerView/ViewPager2出现"Cannot call this method while RecyclerView is computing a layout or scrolling"错误的原因及解决方案。该错误在布局计算或滚动时调用敏感方法(如滚动、更新数据等)时触发。解决方法包括:1)使用post()延迟操作;2)监听滚动状态在空闲时执行;3)操作前检查RecyclerView状态;4)ViewPager2优先使用setCurrentItem()。建转载 2025-06-21 18:16:07 · 136 阅读 · 0 评论 -
Adapter 中获取 RecyclerView 实例的方法
Android开发中获取RecyclerView引用的四种方法:1)通过构造函数传入;2)在onAttachedToRecyclerView回调中获取;3)通过ViewHolder的itemView获取;4)通过Context转换获取。需注意内存泄漏、延迟初始化和线程安全等问题,建议在onDetachedFromRecyclerView中释放引用,避免强引用Activity/Fragment。各方法适用于不同场景,应根据需求选择合适方式。转载 2025-06-21 18:10:00 · 117 阅读 · 0 评论 -
recycleview跳转到指定位置scrollToPosition与scrollToPositionWithOffset的区别
recycleview跳转到指定位置scrollToPosition与scrollToPositionWithOffset的区别转载 2025-06-21 17:23:02 · 92 阅读 · 0 评论 -
ViewPager2中获取当前选中Item的View控件
和同事一起开发了一个自己的树洞App,由于功能需要,需要实现类似于知乎的上一条、下一条滑动的效果,首先想到的就是ViewPager,来实现垂直滑动,但是ViewPager默认是左右滑动的,如果用的话,需要对ViewPager进行重写(网上有很多方案,这里就不做说明了),来进行上下滑动,所以就想到了其他方法。比如RecyclerView也能够来实现,不过也需要对PagerSnapHelper进行操作。因为item里面需要用到刷新控件来实现上一条、下一条的效果,所以也就放弃了RecyclerView。转载 2025-06-21 09:47:14 · 147 阅读 · 0 评论 -
Textview文字设置不同颜色、下划线、加粗、超链接
本文介绍了两种在Android中实现文本多样式显示的方法。1. SpannableString:通过setSpan()方法设置不同文本样式(颜色、下划线、超链接等),支持多种Span类型如ForegroundColorSpan、UnderlineSpan等,并详细说明了参数用法。2. HTML方式:使用Html.fromHtml()解析HTML标签实现简单样式,如<font>设置颜色、<u>添加下划线。两种方法都能实现文本多样式,SpannableString功能更强大且效率更高,而HTML方式更简单易用。转载 2025-06-18 21:32:46 · 80 阅读 · 0 评论 -
应用中富文本处理:删除超链接下划线,设置字体粗体显示 Span ClickableSpan 粗体
首先,创建一个自定义的,在其中你可以设置文本的样式,比如粗体。@Override// 设置文本为粗体// 设置文本颜色等(如果需要)// 或者其他颜色// 如果你想移除下划线@Override// 处理点击事件。转载 2025-06-18 20:39:20 · 124 阅读 · 0 评论 -
TextView 文本展开收起
本文介绍了在Android中实现TextView文本展开/收起功能的方法。通过设置TextView的布局参数和OnPreDrawListener监听,判断文本是否超过4行。如果超过,则截取前4行并在末尾添加可点击的"展开"文本;点击后显示全文并添加"收起"选项。核心是利用TextPaint、Layout计算文本行数,并采用SpannableStringBuilder和ClickableSpan实现文本截断和点击交互。该方法适用于需要控制长文本显示的场景。转载 2025-06-18 19:53:32 · 170 阅读 · 0 评论 -
MotionLayout(二):MotionLayout是什么?MotionLayout调试技巧、KeyFrame关键帧等等
MotionLayout是Android Jetpack中继承自ConstraintLayout的高级布局容器,专门用于处理复杂的界面动画和交互效果。它通过MotionScene配置文件定义动画状态(ConstraintSet)、过渡规则(Transition)和关键帧(KeyFrame),支持手势触发、路径动画等高级功能。开发者可以创建折叠标题栏、多视图联动等流畅动画效果。调试时可使用showPaths属性可视化路径,注意确保constraintSetStart与初始布局一致。相比传统动画实现方式,Mot转载 2025-06-17 15:55:58 · 258 阅读 · 0 评论 -
MotionLayout入门级使用教程(一)
MotionLayout是ConstraintLayout 2.0引入的子类,专门用于实现复杂动画效果。它通过MotionScene文件定义动画状态(ConstraintSet)、过渡(Transition)和关键帧(KeyFrameSet)。主要特性包括:1)通过ConstraintSet描述动画起始/结束状态;2)使用Transition配置过渡时长和触发方式(OnClick/OnSwipe);3)支持自定义属性动画和路径效果。配置时需升级ConstraintLayout库至2.0+,并将XML根布局改转载 2025-06-17 15:37:57 · 149 阅读 · 0 评论 -
ViewPager2(一)
ViewPager2是Android Jetpack组件中用于页面滑动切换的控件,替代了旧版ViewPager。基于RecyclerView实现,支持横向/纵向滑动,性能更优。主要功能包括:1) 通过RecyclerView.Adapter配置页面内容;2) 支持Fragment切换;3) 提供PageTransformer实现自定义切换动画;4) 可监听页面滑动状态。使用需添加依赖com.androidx.viewpager2:viewpager2,布局文件需设置为match_parent。扩展功能包括修转载 2025-06-14 16:58:17 · 142 阅读 · 0 评论 -
使用RecyclerView设置自定义分割线
这个能满足一般需求,但是如果我想使用自定义的分割线呢,看以下代码。哈哈,这就发生了改变,把全部代码贴上来吧。首先,我们来看一下怎么设置默认的分割线。转载 2025-06-04 21:09:41 · 184 阅读 · 0 评论 -
DialogFragment的宽度占据整个屏幕
DialogFragment是Android开发中用于创建全屏对话框的组件,相比AlertDialog具有更灵活的屏幕适配能力。开发者可以通过两种方式实现全屏宽度:1)在onCreateView方法中动态设置WindowManager.LayoutParams为MATCH_PARENT;2)通过自定义style样式,在XML中配置windowMinWidthMajor/Minor属性为100%。这两种方法都能让对话框占据整个屏幕宽度,提供更好的用户体验,尤其适合需要大空间展示内容的场景。转载 2025-06-04 13:51:52 · 217 阅读 · 0 评论 -
Dialog 支持 lifecycleScope 和 viewmodel 生命周期
文章介绍了如何为Dialog添加生命周期管理功能,使其支持lifecycleScope和ViewModel自动销毁。通过自定义BaseLifecycleDialog基类,实现LifecycleOwner和ViewModelStoreOwner接口,并在show/dismiss时更新生命周期状态。使用时只需继承该基类,即可像Activity/Fragment一样使用lifecycleScope和by viewModels(),同时自动管理资源释放。该方案适用于需要Dialog独立管理生命周期的特殊业务场景。转载 2025-05-30 19:16:53 · 205 阅读 · 0 评论 -
级联地址选择器级联地址选择器
JDAddressSelector是一款仿京东(V5.0.1)风格的Android级联地址选择组件。主要特性包括:1)通过JitPack快速集成;2)支持两种使用方式 - 直接获取视图或通过底部弹窗展示;3)提供灵活的数据源配置,可自定义省市区街道数据获取逻辑;4)支持多线程和RxJava异步加载数据。转载 2025-05-30 11:00:39 · 71 阅读 · 0 评论 -
AndroidPicker 使用指南文档
AndroidPicker是一个功能丰富的安卓选择器类库,提供多种选择器组件,包括日期/时间选择器、单项选择器、多级联动选择器、城市地址选择器、数字选择器、文件选择器等。虽然原作者已不再维护该项目,但仍欢迎开发者通过GitHub提交Pull Request共同维护。该库支持灵活配置和自定义样式,提供Java和XML两种使用方式,并支持与DialogFragment结合使用。开发者可根据需求选择不同模块进行集成,最新版本采用重构优化后的API,与旧版本不兼容,升级需谨慎。项目提供完整文档和Demo演示转载 2025-05-28 19:33:30 · 214 阅读 · 0 评论 -
TextView的TextColor中使用selector的问题
在Android开发中,TextView的文本颜色可以根据不同的状态(如选中、点击、获取焦点)进行动态变化。通常,这可以通过代码实现,但Android提供了一种更简洁的方式——使用selector。首先,在res目录下创建color文件夹,并在其中定义一个selector XML文件。该文件中,通过<item>标签为不同状态设置颜色,例如state_selected、state_focused和state_pressed。最后,将selector文件应用到TextView的android:textColor转载 2025-05-23 10:04:08 · 210 阅读 · 0 评论
分享