Android开发之自动换行RadioGroup
2015-01-24 11:09
405 查看
Android开发中,RadioGroup组件无论设置横排显示还是竖排显示,都无法使过多的RadioButton一行显示完自动跳到下一行,影响用户体验。FlowRadioGroup 继承RadioGroup ,很好的解决了这一问题。
import android.widget.RadioGroup; import android.content.Context; import android.util.AttributeSet; import android.view.View /** * 流式布局的RadioGroup */ public class FlowRadioGroup extends RadioGroup {</p> 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); } } } }
相关文章推荐
- Eclipse中的自动换行-android开发
- android之自定义ViewGroup和自动换行的布局的实现
- android之自定义ViewGroup和自动换行的布局的实现
- Android开发Tabhost+RadioGroup实现底部菜单栏
- android之自定义ViewGroup和自动换行的布局的实现
- Eclipse中的自动换行-android开发
- Android开发之四(五):常用控件之单项选择(RadioGroup和RadioButton)
- Android自定义ViewGroup自动换行实现滑动任意布局及事件处理效果
- android之自定义ViewGroup和自动换行的布局的实现
- android开发学习笔记——稍复杂控件 RadioGroup,CheckBox,Toast
- Android开发视频教程之十二(RadioGroup、RadioButton、CheckBox和Toast的使用)
- android应用开发揭秘例example4-7笔记(RadioGroup和RadioButton的使用与改进)
- android之自定义ViewGroup和自动换行的布局的实现
- Android开发(20)--RadioGroup的使用
- android之自定义ViewGroup和自动换行的布局的实现
- Android开发--控件之RadioGroup、RadioButton、CheckBox、Toast
- android开发控件——radiogroup(入门)
- android之自定义ViewGroup和自动换行的布局的实现(支持按钮间隔)
- android之自定义ViewGroup和自动换行的布局的实现
- Android开发(20)--RadioGroup的使用