我有一個類SomeView,它擴展了View並且在一個類中顯示擴展了線性佈局的控件。onClickListener在Activity上設置
線性佈局在創建活動時實例化。 我想在每次點擊這個視圖SomeView時在活動中調用一個方法。 我試圖設置onClickListener在活動這樣
public class MainActivity extends AppCompatActivity implements
SomeView.OnClickListener {
private Controls menu;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
menu = new Controls(this);
menu.getSomeView().setOnClickListener(this);
setContentView(menu);
}
@Override
public void onClick(View view) {
System.out.println("Hello");
}
}
控件類看起來像這樣
public class Controls extends LinearLayout {
private SomeView aview;
public Controls(Context context) {
super(context);
this.setOrientation(LinearLayout.HORIZONTAL);
aview = new SomeView(context);
this.addView(aview, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
}
public SomeView getSomeView() {
return aview;
}
}
和SomeView類看起來是這樣的(它只是繪製一個橢圓形)
public class SomeView extends View {
public SomeView(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
RectF aRect = new RectF();
aRect.left = getPaddingLeft();
aRect.top = getPaddingTop();
aRect.right = getWidth() - getPaddingRight();
aRect.bottom = getHeight() - getPaddingBottom();
Paint aPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
aPaint.setColor(Color.GREEN);
canvas.drawOval(aRect, aPaint);
}
}
但我錯過了一些東西,因爲點擊沒有調用onClick方法。 我還需要設置什麼?
您能向我們展示您的Controls類代碼嗎? – xFighter
您從未將控件添加到活動的內容視圖? –
@AbdulAhad我將它添加到問題中。 – JennyToy