【发布时间】:2015-10-29 08:42:10
【问题描述】:
我有一个扩展 View 的类 Token。我重写了 onDraw 方法来绘制两个矩形。之后,我想更改 Token 对象的大小以匹配矩形的大小。为了测试,我添加了一个 onClickListener,它应该打印出“Test”
layout = (RelativeLayout) findViewById(R.id.layout);
Paint p = new Paint();
Token a = new Token(0,0, Token.ONE, p, this);
layout.addView(a);
a.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("test");
}
});
Token 类:
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
tSize = canvas.getWidth()/Activity.SIZE;
paint.setColor(Color.BLACK);
r.set(0, 0, tSize, tSize);
canvas.drawRect(r, paint);
r.set(tSize, 0, 2 * tSize, tSize);
canvas.drawRect(r, paint);
}
到目前为止一切顺利。问题是它总是打印出“测试”,无论我在屏幕上按哪里。我认为这是因为包含这两个矩形的视图是整个屏幕的大小。 所以我尝试了 LayoutParams:
setLayoutParams(new RelativeLayout.LayoutParams(tSize*2, tSize);
这导致矩形根本不显示(我认为它们变小了)。我尝试了其他一些数字:
setLayoutParams(new RelativeLayout.LayoutParams(600, 600);
这是有效的。 rects 出现,Listener 仅在 600x600 字段中工作。唯一的问题是矩形比我想要的要小。我的猜测是它们的大小与它们所在的视图的大小有关。
我如何实现我的视图完全是 (tSize*2, tSize) 并填充矩形?
【问题讨论】:
标签: android android-layout view