2025年3月18日 星期二 甲辰(龙)年 月十七 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > 安卓(android)开发

自动换行的radiogroup

时间:01-14来源:作者:点击数:31

自动换行的radiogroup

  • public class FlowRadioGroup extends LinearLayout {
  • 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);
  • }
  • }
  • }
  • }
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门