ビューに小さなボタンがありますが、それを大きくすることはできません (ムーバーとシェーカーはそれを大きくしたくありません)。ボタンの周りに他のビューがあるため、ボタンをクリックするのは非常に困難です。androiddevcon III Dave で誰かがビューのヒット領域の拡張について講演しましたが、彼は自分の例にコードを含めていませんでした。今、私はこれを実際に実装する方法を理解しようとしています。
私がやろうとしているのは、大きな四角形内でクリックが発生した場合に Button.onClick イベントを発生させることです。次のコードは 2.3.4 エミュレーターで動作するようです (エミュレーターにはテストしようとしている機能がないためわかりにくい) が、Android 2.3.4 を実行しているモトローラの電話ではまったく動作しません。
View view=findViewById(R.id.Header);
view.setOnTouchListener(new OnTouchListener(){
public boolean onTouch(View v, MotionEvent event) {
Rect rect=new Rect();
Button btn=(Button)findViewById(R.id.btn1);
btn.getHitRect(rect);
util.scaleRect(rect);
if (rect.contains((int)event.getX(), (int)event.getY())){
event.setLocation(rect.exactCenterX(), rect.exactCenterY());
btn.dispatchTouchEvent(event);
return true;
}
else{
return false;
}
}
});