我做了一個自定義視圖 - 它擴展了View
。在onDraw()
方法中,我創建了一個半徑設置的圓。目前在我的XML中,我的layout_width
和layout_height
設置爲wrap_content
。圓是正確的大小,但當我設置一個onClickListener
我不必觸摸該圓註冊。我可以在任何沒有其他觀點的地方挖掘。自定義視圖測量
我想我需要做一些事情onMeasure
或LayoutParams
但我不知道究竟是什麼。
我的目標是僅在layout_width
和height
仍設置爲wrap_content
時單擊圓圈時纔會調用onClickListener
。
編輯:
這將創建一個正方形不是一個圈子,因爲我想要的。
這裏是我的代碼:
protected void onDraw(Canvas canvas) {
canvas.drawCircle(canvas.getWidth() /2 , canvas.getHeight() /2,
RADIUS, paint);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// TODO Auto-generated method stub
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
widthMeasureSpec = RADIUS;
heightMeasureSpec = RADIUS;
setMeasuredDimension(widthMeasureSpec, heightMeasureSpec);
}
'wrap_content'表示使用的最小尺寸,其包裝這一觀點的內容,所以你需要告訴機器人什麼的最小尺寸在'onMeasure()'方法中。 – Luksprog
@Luksprog所以,我可以讓'widthMeasureSpec,heightMeasureSpec'等於我的圓的半徑?編輯:是的,這有效,但它使一個方... – RiThBo
使用半徑是一個基本的方法,你想要什麼,但一個視圖可以收到一些其他的限制。一個視圖也是一個矩形,所以你不能使它成爲一個圓或任何其他形狀。但是,您可以覆蓋它的'onTouch'方法,並且只有在圓圈區域中註冊觸摸時才觸發點擊事件。 – Luksprog