Android自定义View简单实现流式动态添加圆角矩形气泡

时间:2024-04-05 13:37:20

Android自定义View简单实现流式动态添加圆角矩形气泡

简单学习玩转自定义View

1.首先在如图

在该包中新建一个包,在包中创建一个类

Android自定义View简单实现流式动态添加圆角矩形气泡

因该效果为容器,需继承ViewGroup(非容器继承View)实现三个构造,一个布局方法Android自定义View简单实现流式动态添加圆角矩形气泡

之后在该MainActivity的xml布局中创建一个输入框一个TextView设置点击事件,及上面的类引用创建的一个控件,设置Id

Android自定义View简单实现流式动态添加圆角矩形气泡

实现点击事件在MainActivity中实现添加子控件方法,找控件,然后在实现的方法里创建一个引用类中的方法,传入获取输入框中的值,创建该方法

Android自定义View简单实现流式动态添加圆角矩形气泡

在drawable中新建一个xml如下图

Android自定义View简单实现流式动态添加圆角矩形气泡
Android自定义View简单实现流式动态添加圆角矩形气泡

在xml中做如下操作

Android自定义View简单实现流式动态添加圆角矩形气泡

在添加子控件方法中动态创建TextView

Android自定义View简单实现流式动态添加圆角矩形气泡

在该类中的布局方法中,先将左上右下赋值为0

protected void onLayout(boolean changed, int l, int t, int r, int b) {
int left=0;
int top=0;
int right=0;
int bottom=0;
//获取子类数量
int childCount = getChildCount();
//判断子类数量是否大于0
if (childCount>0){
for (int i = 0; i < childCount; i++) {
//获取每个子控件
View childView = getChildAt(i);
//自动测量
childView.measure(0,0);
//获取测量宽高
int measuredWidth = childView.getMeasuredWidth();
int measuredHeight = childView.getMeasuredHeight();
//获取控件右边的位置
right=left+measuredWidth;
//判断是否大于屏幕宽度,
if (right>getWidth()){//如果大于换行
left=0;
right=left+measuredWidth;
top=bottom+10;
}
//不换行
bottom=top+measuredHeight;
//子控件布局左右顶底
childView.layout(left,top,right,bottom);
//左侧距离累加
left+=measuredWidth+10;
//结束
}
}
}