效果图

Android 自动换行流式布局的RadioGroup_第1张图片

用法

使用FlowRadioGroup代替RadioGroup

代码

import android.content.Context;import android.util.AttributeSet;import android.view.View;import android.widget.RadioGroup;/** * 流式布局的RadioGroup */public class FlowRadioGroup extends RadioGroup {        public FlowRadioGroup(Context context) {        super(context);    }    public FlowRadioGroup(Context context, AttributeSet attrs) {        super(context, attrs);    }    @Override    protected 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);                // 此处增加onlayout中的换行判断,用于计算所需的高度                int width = child.getMeasuredWidth();                int height = child.getMeasuredHeight();                x += width;                y = row * height + height;                if (x > maxWidth) {                    x = width;                    row++;                    y = row * height + height;                }            }        }        // 设置容器所需的宽度和高度        setMeasuredDimension(maxWidth, y);    }    @Override    protected 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;                y = row * height + height;                if (x > maxWidth) {                    x = width;                    row++;                    y = row * height + height;                }                child.layout(x - width, y - height, x, y);            }        }    }}

更多相关文章

  1. Android 布局 优先显示右侧的控件
  2. LinearLayout(线性布局)
  3. android 用代码编写linearlayout布局
  4. Android 应用软件开发(八)窗口布局
  5. Android中当item数量超过一定大小RecyclerView高度固定
  6. Android七大布局
  7. 2013.03.19(5)———android 获取状态栏的高度

随机推荐

  1. Create Hello Android
  2. 使用命令行创建Android模拟器
  3. Android人脸识别技术
  4. android:weight的使用
  5. Android硬件访问服务-Service
  6. Android中横竖屏、全屏、无标题设置
  7. 2010.11.27———android 展示网络上的图
  8. Android中的集中常用布局方式和按钮事件
  9. LayoutAnimation
  10. 在Android上执行Java程序