Android 流式布局LinearLayout
来源:互联网 发布:中文域名在线转码程序 编辑:程序博客网 时间:2024/06/15 01:30
在安卓中,我们并没有现成的布局去实现自动流式的布局,这里给大家分享一个 FlowLinearLayout 。希望能帮到有需要的人。
package com.utils.widget;import android.content.Context;import android.util.AttributeSet;import android.view.View;import android.widget.LinearLayout;public class FlowLinearLayout extends LinearLayout {private int paddingy = 0;private int paddingx = 10;public FlowLinearLayout(Context context) {this(context, null);}public FlowLinearLayout(Context context, AttributeSet attrs) {super(context, attrs);}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {int maxWidth = MeasureSpec.getSize(widthMeasureSpec);int childCount = getChildCount();int x = 0;int y = 0;int row = 0;for (int index = 0; index < childCount; index++) {final View child = getChildAt(index);if (child.getVisibility() != View.GONE) {child.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED);int width = child.getMeasuredWidth();int height = child.getMeasuredHeight();x += width;if (index != 0) x += paddingx;y = row * height + height;if (x > maxWidth) {x = width;row++;y = row * height + height;y += row * paddingy;} else if (row > 0) {y = row * height + height;y += row * paddingy;}}}setMeasuredDimension(maxWidth, y);}@Overrideprotected void onLayout(boolean changed, int l, int t, int r, int b) {final int childCount = getChildCount();int maxWidth = r - l;int x = 0;int y = 0;int row = 0;for (int i = 0; i < childCount; i++) {final View child = this.getChildAt(i);if (child.getVisibility() != View.GONE) {int width = child.getMeasuredWidth();int height = child.getMeasuredHeight();x += width;if (i != 0) x += paddingx;y = row * height + height;if (x > maxWidth) {x = width;row++;y = row * height + height;y += row * paddingy;} else if (row > 0) {y = row * height + height;y += row * paddingy;}child.layout(x - width, y - height, x, y);}}}public int getPY() {return paddingy;}public void setPY(int paddingy) {this.paddingy = paddingy;}public int getPX() {return paddingx;}public void setPX(int paddingx) {this.paddingx = paddingx;}}
1 0
- Android 流式布局LinearLayout
- Android 布局 LinearLayout
- android布局之LinearLayout
- android之布局LinearLayout
- Android 布局 之 LinearLayout
- android 之LinearLayout布局
- android LinearLayout布局
- Android开发--布局LinearLayOut
- Android 线性布局:LinearLayout
- android linearlayout 布局
- Android的LinearLayout布局
- Android之LinearLayout布局
- Android布局之LinearLayout
- android 之LinearLayout布局
- Android LinearLayout布局解析
- android LinearLayout布局
- Android布局详解:LinearLayout
- android LinearLayout比例布局
- Win32窗体应用程序如何添加资源文件?
- 面试题-华为-空瓶换饮料问题-1
- wifi网络结构(上)
- WebService之XFire和SOAP实例(基于JAVA)
- J2EE异常处理写法总结
- Android 流式布局LinearLayout
- 博客笔记总结2
- Material Design (四) TabLayout的使用
- Docker基本介绍
- __toString方法
- JAVAWEB开发模式之JSP的几种开发模式、处理Cookie中文乱码
- Angular 拦截器(403、401)
- servlet 的乱码问题
- 玩转数据挖掘的第一阶段——入门篇