阶梯布局
public class JieTi extends ViewGroup {
private int mMeasuredWidth;
private int mMeasuredHeight;
private int mWidthPixels;
public JieTi(Context context) {
this(context, null);
}
public JieTi(Context context, AttributeSet attrs) {
this(context, attrs, -1);
}
public JieTi(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
mWidthPixels = displayMetrics.widthPixels;
for (int i = 0; i < 10; i++) {
initText();
}
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
/*TextView textView = initText();
textView.measure(getMeasuredWidth(), getMeasuredHeight());*/
int childCount = getChildCount();
for (int i = 0; i < childCount; i++) {
View childAt = getChildAt(i);
childAt.measure(0, 0);
measureChild(childAt, childAt.getMeasuredWidth(), childAt.getHeight());
int measuredWidth = childAt.getMeasuredWidth();
int measuredHeight = childAt.getMeasuredHeight();
childAt.layout(measuredWidth * i, measuredHeight * i, measuredWidth * (i + 1), measuredHeight * (i + 1));
}
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int width = 0;
int height = 0;
int mode = MeasureSpec.getMode(heightMeasureSpec);
if (mode == MeasureSpec.AT_MOST) {
int childCount = getChildCount();
for (int i = 0; i < childCount; i++) {
View childAt = getChildAt(i);
measureChild(childAt, childAt.getMeasuredWidth(), childAt.getMeasuredHeight());
mMeasuredWidth = childAt.getMeasuredWidth();
mMeasuredHeight = childAt.getMeasuredHeight();
width += mMeasuredWidth;
height += mMeasuredHeight;
}
setMeasuredDimension(width, height);
return;
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
private TextView initText() {
TextView textView = new TextView(getContext());
textView.setBackgroundColor(Color.RED);
textView.setText("工程师");
textView.setTextSize(20);
textView.setTextColor(Color.BLACK);
this.addView(textView);
return textView;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawColor(Color.YELLOW);
}
}
<?xml version="1.0" encoding="utf-8"?><com.bw.qgs.jieti.Jie
android:background="@color/colorAccent"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>