java画布中添加按钮_java – 如何在画布中的现有矩形顶部添加...

我试图在现有画布中添加一些红色矩形,与特定的盒子一样,与预期的结果图像完全一样,但它们根本不显示,因为我的代码显示了部署应用程序时当前不需要的结果.我的代码是在顶行创建4个矩形,在底行创建4个矩形,但我只想在盒子2-6的顶部添加它,但我知道需要为盒子顶部的红色矩形添加额外的代码1& 7.有谁知道我做错了什么以及如何解决这个问题?所有帮助将不胜感激.

public class RectangleTextView extends View {

private final Paint mBlackPaint = new Paint();

private final Paint mRedPaint = new Paint();

private final TextPaint mTextPaint;

public RectangleTextView(Context context, AttributeSet attrs) {

super(context, attrs);

int valueInDp = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1, getResources().getDisplayMetrics());

int valueInSp = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 20, getResources().getDisplayMetrics());

mRedPaint.setColor(Color.parseColor("#CC3333"));

mBlackPaint.setAntiAlias(false);

mBlackPaint.setColor(Color.BLACK);

mBlackPaint.setStrokeWidth(valueInDp);

mBlackPaint.setStyle(Paint.Style.STROKE);

mTextPaint = new TextPaint(TextPaint.ANTI_ALIAS_FLAG);

mTextPaint.setColor(Color.BLACK);

mTextPaint.setTextAlign(Paint.Align.CENTER);

mTextPaint.setTextSize(valueInSp);

mWindowPaint = new Paint();

mWindowPaint.setColor(Color.parseColor("#CC3333"));

mWindowPaint.setStrokeWidth(valueInDp);

}

private Paint mWindowPaint;

@Override protected void onDraw(Canvas canvas) {

super.onDraw(canvas);

if (getWidth() == 0)

return;

//initialise red rectangles

int w = canvas.getWidth();

int h = canvas.getHeight();

int rectWidth = w / 5;

int space = w / 15;

int topRectHeight = getPaddingTop();

int bottomRectHeight = getPaddingBottom();

//draw end rectangles

int mSideRectWidth = 10;

canvas.drawRect(0, 0, mSideRectWidth, getHeight(), mRedPaint); //draw left end rectangle

canvas.drawRect(getWidth() - mSideRectWidth, 0, getWidth(), getHeight(), mRedPaint); //draw right end rectangle

//draw grey boxes

setBackgroundColor(Color.parseColor("#808080"));

int boxWidth = (getWidth() - mSideRectWidth) / 7;

//draw text views

for (int i = 0; i < 7; i++) {

canvas.drawText(Integer.toString(i + 1), (i * boxWidth + 10) + (boxWidth / 2), ((canvas.getHeight() / 2) - ((mTextPaint.descent() + mTextPaint.ascent()) / 2)), mTextPaint);

}

//draw black lines

for (int i = 1; i < 7; i++) {

canvas.drawLine(mSideRectWidth + boxWidth * i, 0, mSideRectWidth + boxWidth * i, getHeight(), mBlackPaint);

}

//draw red windows

for (int i = 0; i < 4; i++) {

mWindowPaint.setStyle(Paint.Style.STROKE);//add this

int left = i * (rectWidth + space);

int right = left + rectWidth;

if (i == 1){

mWindowPaint.setStyle(Paint.Style.FILL); // change to this

}

Rect rect = new Rect(left, 0, right, topRectHeight);

canvas.drawRect(rect, mWindowPaint);

Rect rect2 = new Rect(left, h - bottomRectHeight, right, h);

canvas.drawRect(rect2, mWindowPaint);

}

}

}

预期结果

d501faffc840c9ea990caddff164c010.png

当前不受欢迎的结果

771cf11be6b521062279a0369af7d506.png

activity_main.xml中

xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"

android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

android:layout_width="100dp"

android:layout_height="45dp"

android:paddingTop="10dp"

android:paddingBottom="10dp"

android:background="#808080"

android:gravity="center"/>

MainActivity.java

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值