Android 控件自动换行
来源:互联网 发布:木马下载软件 编辑:程序博客网 时间:2024/05/16 15:25
/**
*
* @author zzp
* 自动换行
*/
public class CustomAutoChangeLine extends ViewGroup {
private static final int PADDING_HOR = 10;// 水平方向padding
private static final int PADDING_VERTICAL = 5;// 垂直方向padding
private static final int SIDE_MARGIN = 10;// 左右间距
private static final int TEXT_MARGIN = 2;
/** * @param context */public CustomAutoChangeLine(Context context) { super(context);}/** * @param context * @param attrs * @param defStyle */public CustomAutoChangeLine(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle);}/** * @param context * @param attrs */public CustomAutoChangeLine(Context context, AttributeSet attrs) { super(context, attrs);}@Overrideprotected void onLayout(boolean changed, int l, int t, int r, int b) { int childCount = getChildCount(); int autualWidth = r - l; int x = SIDE_MARGIN;// 横坐标开始 int y = 0;// 纵坐标开始 int rows = 1; for (int i = 0; i < childCount; i++) { View view = getChildAt(i); // view.setBackgroundColor(Color.GREEN); int width = view.getMeasuredWidth(); int height = view.getMeasuredHeight(); x += width + TEXT_MARGIN; if (x > autualWidth) { x = width + SIDE_MARGIN; rows++; } y = rows * (height + TEXT_MARGIN); if (i == 0) { view.layout(x - width - TEXT_MARGIN, y - height, x - TEXT_MARGIN, y); } else { view.layout(x - width, y - height, x, y); } }};@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int x = 0;// 横坐标 int y = 0;// 纵坐标 int rows = 1;// 总行数 int specWidth = MeasureSpec.getSize(widthMeasureSpec); int actualWidth = specWidth - SIDE_MARGIN * 2;// 实际宽度 int childCount = getChildCount(); for (int index = 0; index < childCount; index++) { View child = getChildAt(index); child.setPadding(PADDING_HOR, PADDING_VERTICAL, PADDING_HOR, PADDING_VERTICAL); child.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED); int width = child.getMeasuredWidth(); int height = child.getMeasuredHeight(); x += width + TEXT_MARGIN; if (x > actualWidth) {// 换行 x = width; rows++; } y = rows * (height + TEXT_MARGIN); } setMeasuredDimension(actualWidth, y);}
}
布局文件
0 0
- Android 控件自动换行
- Android 控件自动换行
- Android 自定义自动换行控件
- android自定义控件自动换行效果实现
- android自定义控件自动换行效果实现
- android自定义控件实现自动换行效果
- android自定义控件自动换行效果实现
- 自动换行控件
- 彻底解决android中Textview控件文本自动换行问题
- Android 自定义控件-自动换行的流线性布局-DragFlowLayout
- android商品属性选择标签控件,可实现自动换行
- Edit Control 控件自动换行
- CEdit控件自动换行显示
- android TextView 自动换行
- Android TextView自动换行
- android元素自动换行
- Android TextView 自动换行
- Android LinearLayout 自动换行
- UI组件之Notification
- 粒子系统
- struts2三种表单值的传递方式及OGNL详解
- hadoop2.6.3安装
- Python中的单例模式实现
- Android 控件自动换行
- PHP Notice: Constant **** already defined in解决
- struts常用标签总结
- 【转载】怎样解决Ubuntu系统中git每次提交都要输入密码
- 《编码隐藏在计算机软硬件背后的语言》读感
- 用python爬大一波美女妹子
- Struts2之自定义类型转换器
- 微信朋友圈马赛克图片 —— 抓包破解
- 抽象编程思想笔记