Viewを拡張し、クラス内に表示されるSomeViewクラスがあり、これは線形レイアウトを拡張するコントロールです。onClickListenerがアクティビティに設定されました
線形レイアウトは、アクティビティのonCreateでインスタンス化されます。 このビューSomeViewをクリックするたびに、アクティビティのメソッドを呼びたいと思います。 私はこの
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クラスは次のようになりますように活動にonClickListenerを設定しようとした
(それはちょうど楕円形を描画します)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メソッドを呼び出さないため、何かが欠けています。 その他に何かセットアップが必要ですか?
あなたのコントロールのクラスコードを教えてください。 – xFighter
アクティビティのコンテンツビューにコントロールを追加したことはありませんか? –
@AbdulAhad質問に追加しました。 – JennyToy