Android模仿微信收藏文件的标签处理功能

Android模仿微信收藏文件的标签处理功能,第1张

概述 最近需要用到微信的标签功能(如下图所示)。该功能可以添加已有标签,也可以自定义标签。也可以删除已编辑菜单。研究了一番。发现还是挺有意思的,模拟实现相关功能。

 最近需要用到微信的标签功能(如下图所示)。该功能可以添加已有标签,也可以自定义标签。也可以删除已编辑菜单。研究了一番。发现还是挺有意思的,模拟实现相关功能。

该功能使用类似FlowLayout的功能。Flowlayout为一个开源软件(https://github.com/ApmeM/android-flowlayout ),功能为自动换行的布局类型

import androID.content.Context; import androID.util.AttributeSet; import androID.vIEw.VIEw; import androID.vIEw.VIEwGroup; /** * * @author RAW */ public class FlowLayout extends VIEwGroup { private final static int PAD_H = 2,PAD_V = 2; // Space between child vIEws. private int mHeight; public FlowLayout(Context context) { super(context); } public FlowLayout(Context context,AttributeSet attrs) { super(context,attrs); } @OverrIDe protected voID onMeasure(int wIDthMeasureSpec,int heightmeasureSpec) { assert (MeasureSpec.getMode(wIDthMeasureSpec) != MeasureSpec.UnspecIFIED); final int wIDth = MeasureSpec.getSize(wIDthMeasureSpec) - getpaddingleft() - getpaddingRight(); int height = MeasureSpec.getSize(heightmeasureSpec) - getpaddingtop() - getpaddingBottom(); final int count = getChildCount(); int xpos = getpaddingleft(); int ypos = getpaddingtop(); int childHeightmeasureSpec; if(MeasureSpec.getMode(heightmeasureSpec) == MeasureSpec.AT_MOST) childHeightmeasureSpec = MeasureSpec.makeMeasureSpec(height,MeasureSpec.AT_MOST); else childHeightmeasureSpec = MeasureSpec.makeMeasureSpec(0,MeasureSpec.UnspecIFIED); mHeight = 0; for(int i = 0; i < count; i++) { final VIEw child = getChildAt(i); if(child.getVisibility() != GONE) { child.measure(MeasureSpec.makeMeasureSpec(wIDth,MeasureSpec.AT_MOST),childHeightmeasureSpec); final int chilDW = child.getMeasureDWIDth(); mHeight = Math.max(mHeight,child.getMeasuredHeight() + PAD_V); if(xpos + chilDW > wIDth) { xpos = getpaddingleft(); ypos += mHeight; } xpos += chilDW + PAD_H; } } if(MeasureSpec.getMode(heightmeasureSpec) == MeasureSpec.UnspecIFIED) { height = ypos + mHeight; } else if(MeasureSpec.getMode(heightmeasureSpec) == MeasureSpec.AT_MOST) { if(ypos + mHeight < height) { height = ypos + mHeight; } } height += 5; // Fudge to avoID clipPing bottom of last row. setMeasuredDimension(wIDth,height); } // end onMeasure() @OverrIDe protected voID onLayout(boolean changed,int l,int t,int r,int b) { final int wIDth = r - l; int xpos = getpaddingleft(); int ypos = getpaddingtop(); for(int i = 0; i < getChildCount(); i++) { final VIEw child = getChildAt(i); if(child.getVisibility() != GONE) { final int chilDW = child.getMeasureDWIDth(); final int childh = child.getMeasuredHeight(); if(xpos + chilDW > wIDth) { xpos = getpaddingleft(); ypos += mHeight; } child.layout(xpos,ypos,xpos + chilDW,ypos + childh); xpos += chilDW + PAD_H; } } } // end onLayout() }

点击下载源码

以上所述是小编给大家介绍的androID模仿微信收藏文件的标签处理功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持!

总结

以上是内存溢出为你收集整理的Android模仿微信收藏文件的标签处理功能全部内容,希望文章能够帮你解决Android模仿微信收藏文件的标签处理功能所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1147728.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存