自定义View画表格

布局界面

<com.baidu.tast1.MyView
    android:id="@+id/myView"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="8"/>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:orientation="vertical"
    android:layout_weight="3">
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入姓名"
        android:id="@+id/ed_name"/>
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入成绩"
        android:id="@+id/ed_score"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="提交"
        android:id="@+id/btn_jiao"
        android:gravity="center"/>
</LinearLayout>
MyActivity1

public class MyActivity1 extends AppCompatActivity {

private Button btn_jiao;
private EditText ed_name;
private EditText ed_score;
private MyView myView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.lyout_myview1);
    btn_jiao = findViewById(R.id.btn_jiao);
    ed_name = findViewById(R.id.ed_name);
    ed_score = findViewById(R.id.ed_score);

    myView = findViewById(R.id.myView);
    btn_jiao.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String sname = ed_name.getText().toString();
            String sscore = ed_score.getText().toString();
            int score = Integer.parseInt(sscore);
            myView.addUser(new User(sname,score));
        }
    });


}}

MyView

public class MyView extends View {
private Paint mLinePaint,mTextPaint,mRectPaint;
private ArrayList list;
//重写三个方法
public MyView(Context context) {
super(context);
init();
}
public MyView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init();
}
public MyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
public void addUser(User user){
list.add(user);
this.invalidate();
}//抽出画笔方法

private void init() {
    
    mLinePaint=new Paint();
    mLinePaint.setColor(Color.BLUE);
    mLinePaint.setStyle(Paint.Style.STROKE);//
    mLinePaint.setStrokeWidth(2);

    mRectPaint =new Paint();
    mRectPaint.setColor(Color.RED);
    mRectPaint.setStyle(Paint.Style.FILL);

    mTextPaint=new Paint();
    mTextPaint.setColor(Color.BLUE);
    mTextPaint.setTextSize(50);
    list = new ArrayList<>();

}

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    canvas.drawLine(200,1000,1000,1000,mLinePaint);
    canvas.drawLine(200,1000,200,200,mLinePaint);
    for (int i = 0; i <8 ; i++) {
        int a=i*100;
        canvas.drawText(String.valueOf(a),50,1000+25-a,mTextPaint);
    }

    for (int i = 0; i <list.size() ; i++) {
        int a=i*200;
        float textWidth=mTextPaint.measureText(list.get(i).getName());
        canvas.drawText(list.get(i).getName(),300-textWidth/2+a,1000+100,mTextPaint);
        canvas.drawText(String.valueOf(list.get(i).getScore()),300-textWidth/2+a,1000-list.get(i).getScore()-50,mTextPaint);
        Rect rect = new Rect();
        rect.left=300-50+a;
        rect.right=300+50+a;
        rect.bottom=1000;
        rect.top=rect.bottom-list.get(i).getScore();
        canvas.drawRect(rect,mRectPaint);

    }
}

}
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43717447/article/details/84633389