Activity里的内容
public class MainActivity extends AppCompatActivity {
private com.example.shousuolishi.zdy zdy;
private Button chaxun;
private EditText edittext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化控件
chaxun = findViewById(R.id.chaxun);
edittext = findViewById(R.id.EditText);
final zdy zdy = findViewById(R.id.zdy);
//设置点击事件
chaxun.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//获取输入内容
Editable text = edittext.getText();
//new一个view
TextView textView = new TextView(MainActivity.this);
//设置子view的宽高
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(100, 10, 10, 10);
//给view设置内容
textView.setText(text);
//添加到父view里
zdy.addView(textView);
}
});
}
自定义view类
public class zdy extends ViewGroup {
private int sizeScreenWidth;
public zdy(Context context) {
super(context);
}
public zdy(Context context, AttributeSet attrs) {
super(context, attrs);
}
public zdy(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
measureChildren(widthMeasureSpec,heightMeasureSpec);
sizeScreenWidth = MeasureSpec.getSize(widthMeasureSpec);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
int left = 0;
int top = 0;
int marginHorizontal = 20;
for (int i = 0; i <getChildCount() ; i++) {
View childAt = getChildAt(i);
//获取子view的宽
int measuredWidth = childAt.getMeasuredWidth();
//获取子view的高
int measuredHeight = childAt.getMeasuredHeight();
//判断单个子view比父view宽度小时
if (left+measuredWidth>=sizeScreenWidth) {
top+=measuredHeight;
left=0;
}
childAt.layout(left,top,left+measuredWidth,top+measuredHeight);
left+=measuredWidth+marginHorizontal;
}
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
}