正方形を描画するCellというカスタムビューを作成しました。私のアクティビティでは、セルの2D配列を作成して、グリッド構造を作成します。これは、個々のセルが持つ値に基づいてクリックに応答するようにするためです。たとえば、各セルにはブール値があり、trueとfalseに基づいてセルに色を付けます。最初に、1つのセルでこれを実行してみました。しかし、奇妙な部分は、セルの外側をクリックしてもクリックイベントがトリガーされることです。詳細情報:アクティビティのonCreateメソッドですべてのビューを作成しています。さらに情報が必要な場合はお知らせください。
よろしくお願いします!私は他の参考のために私の元の質問を編集すると思いました:)。
Activity
onCreate() {
super.onCreate(savedInstanceState);
LinearLayout masterLayout = new LinearLayout(this);
LinearLayout.LayoutParams params;
params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT);
masterLayout.setLayoutParams(params);
addCells();
setContentView(masterLayout);
}
function addCells() {
for(int i =0; i<2;i++) {
Cell cell = new Cell(this,i);
LinearLayout.LayoutParams viewParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
cell.setLayoutParams(viewParams);
masterLayout.addView(cell);
cell.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//Do Something here
}
});}}
Custom View :
Cell extends View {
boolean flag=false;
int cellNumber;
float xCoordinate=50;
float yCoordinate=50;
Cell(Context context, AttributeSet attrs) {
super(context, attrs);
}
Cell (Context context, int i) {
super(context);
cellNumber = i;
}
onDraw(Canvas c) {
paint.setColor(Color.RED);
paint.setStrokeWidth(3);
paint.setStyle(Paint.Style.STROKE);
xCoordinate = xCoordinate + 40*cellNumber;
c.drawRect(xCoordinate,yCoordinate,xCoordinate+40,yCoordinate+40, paint);
}}
これは私が試していたはるかに単純なバージョンです。ここで奇妙なのは、カスタムビューの2つの異なるインスタンスを追加しているにもかかわらず、onDraw()が1回だけ呼び出されることです(アクティビティのonCreate()を終了するとき)。私が読んだところによると、新しいビューのレンダリングごとにonDraw()が呼び出されます。その前で私を教えてください!
どうもありがとう!